Add Binary

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

 

我们可以用StringBuiler来存放相加以后的结果,然后在reverse()就行。

两个字符串从后往前加,当一个字符串加完了,剩下那个字符串剩下部分直接加到Builder中。类似于归并的思路。

因为两位数相加可能会出现2,这是需要进位,我们设置个变量carry来表示进位后要加的1(不加则为0).

 

class Solution {
    public String addBinary(String a, String b) {
       StringBuilder sb=new StringBuilder();
        int i=a.length()-1;
        int j=b.length()-1;
        int carry=0;//进位(加carry)
        while(i>=0||j>=0){
            int sum=carry;  //sum用来计算对应位的数字之和,
            if(i>=0) sum+=a.charAt(i--)-'0';
            if(j>=0) sum+=b.charAt(j--)-'0';
            sb.append(sum%2);//因为加起来最大也就2,2要变成0,然后进位设为1.下次求sum时加上
            carry=sum/2;
        }
        
        if(carry!=0) sb.append(carry);
        return sb.reverse().toString();
    }
}

 

posted on 2017-12-19 19:03  夜的第八章  阅读(125)  评论(0编辑  收藏  举报

导航