题目
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".
答案
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();
int a_len = a.length(), b_len = b.length();
int i = a_len - 1, j = b_len - 1;
char ca, cb, carry = '0';
while (i >= 0 || j >= 0) {
ca = (i >= 0) ? a.charAt(i) : '0';
cb = (j >= 0) ? b.charAt(j) : '0';
if (ca == '0' && cb == '0') {
sb.insert(0, carry);
carry = '0';
} else if ((ca == '0' && cb == '1') || (ca == '1' && cb == '0')) {
sb.insert(0, (carry == '0') ? '1' : '0');
carry = (carry == '1') ? '1' : '0';
} else if (ca == '1' && cb == '1') {
sb.insert(0, (carry == '0') ? '0' : '1');
carry = '1';
}
i--;
j--;
}
if(carry == '1') sb.insert(0, '1');
return sb.toString();
}