题目:
算法思想:
从低位一位位相加,但是要考虑到进位情况,而且由于两个长度不相等,应考虑到某一个未加完的情况
代码:
class Solution {
public String addBinary(String a, String b) {
char ch1[] = a.toCharArray();
char ch2[] = b.toCharArray();
int carry = 0;
StringBuilder result = new StringBuilder();
int i, j;
for (i = ch1.length - 1, j = ch2.length - 1; i >=0 && j>=0; i--, j--) {
int curNum = ((ch1[i]-'0') + (ch2[j]-'0') + carry) % 2;
carry = ((ch1[i]-'0') + (ch2[j]-'0') + carry)/2;
result.append(curNum);
}
while(i >= 0) {
int curNum = ((ch1[i]-'0') + carry) % 2;
carry = ((ch1[i]-'0') + carry)/2;
result.append(curNum);
i--;
}
while(j >= 0) {
int curNum = ((ch2[j]-'0') + carry) % 2;
carry = ((ch2[j]-'0') + carry)/2;
result.append(curNum);
j--;
}
if (carry != 0) {
result.append(carry);
}
result.reverse();
return String.valueOf(result);
}
}