题目
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
分析
二进制相加。考虑进位
class Solution {
public static String addBinary(String a, String b) {
char[] aa = a.toCharArray();
char[] bb = b.toCharArray();
if (aa.length<bb.length) {
char[] tmp = aa;
aa = bb;
bb = tmp;
}
int differ = aa.length-bb.length;
int bindex = bb.length-1;
int add = 0;
while (bindex>=0) {
add = bb[bindex]+aa[bindex+differ] +add- 2*'0';
aa[bindex+differ] = (char)(add%2+'0');
add = add/2;
bindex--;
}
while (add>0 && bindex+differ>=0) {
if (aa[bindex+differ] == '1') {
aa[bindex+differ] = '0';
add = 1;
} else {
aa[bindex+differ] = '1';
add = 0;
}
bindex--;
}
if (add == 1) {
return "1"+new String(aa);
}
return new String(aa);
}
}