2014年5月11日星期日

Loop Solution - Add Binary

The idea is to loop both Strings and add each individual char. Just notice to pick up remaining String1 or String2, and even after all, check the carry on digit (next as below) if it is 1, if so add one more.


public class Solution {
    public String addBinary(String a, String b) {
        if(a ==null || b == null){
            return a + b;
        }
        int indexA = a.length() - 1;
        int indexB = b.length() - 1;
        int next = 0;
        StringBuilder result = new StringBuilder();
        while(indexA >= 0 && indexB >= 0){
            int curSum = a.charAt(indexA) + b.charAt(indexB) + next;
            if(curSum > 97){
                next = 1;
                result.insert(0, (char)(curSum - 48 - 2));
            }else{
                next = 0;
                result.insert(0, (char)(curSum - 48));
            }
            indexA--;
            indexB--;
        }
        while(indexA >= 0){
            int curSumA = a.charAt(indexA) + next;
            if(curSumA > 49){
                next = 1;
                result.insert(0, (char) (curSumA - 2));
            }else{
                next = 0;
                result.insert(0, (char) curSumA);
            }
            indexA--;
        }
        while(indexB >= 0){
            int curSumB = b.charAt(indexB) + next;
            if(curSumB > 49){
                next = 1;
                result.insert(0, (char) (curSumB - 2));
            }else{
                next = 0;
                result.insert(0, (char) curSumB);
            }
            indexB--;
        }
        if(next == 1){
            result.insert(0, (char) 49);
        }
       
        return result.toString();
    }
}

没有评论: