Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
public class Solution {
public String addBinary(String a, String b) {
if(a==null || b==null)
return null;
int i=a.length()-1;
int j=b.length()-1;
int carry=0;
StringBuffer sb=new StringBuffer();
while(0<=i && 0<=j){
int digit=(int)(a.charAt(i)-'0'+ b.charAt(j)-'0')+carry;//a.charAt(i)-'0' means trans str to int.
carry=digit/2; //since its binary op, compare to /10, %10
digit%=2;
sb.append(digit);
i--;
j--;
}//end while
while(0<=i){
int digit = (int)(a.charAt(i)-'0')+carry;
carry=digit/2;
digit%=2;
sb.append(digit);
i--;
}
while(j>=0){
int digit=(int)(b.charAt(j)-'0')+carry;
carry=digit/2;
digit%=2;
sb.append(digit);
j--;
}
if(carry>0){
sb.append(carry);
}
return sb.reverse().toString();
}
}
http://blog.youkuaiyun.com/linhuanmars/article/details/20192227