Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
让a和b的每个对应的数依次相加,用一个变量记录进位,相加时考虑进位,并不断修改进位即可。
class Solution {
public:
string addBinary(string a, string b) {
int lena = a.size();
int lenb = b.size();
int ia, ib, ic = 0;
string c;
int sum;
int i = lena - 1, j = lenb - 1;
while(i >= 0 && j >= 0){
ia = a[i --] - '0';
ib = b[j --] - '0';
sum = ia + ib + ic;
if(sum == 0) c += '0';
else if(sum == 1) {
c += '1';
ic = 0;
}
else if(sum == 2){
c += '0';
ic = 1;
}else if(sum == 3){
c += '1';
ic = 1;
}
}
while(i >= 0){
ia = a[i --] - '0';
sum = ia + ic;
if(sum == 0) c += '0';
else if(sum == 1){
c += '1';
ic = 0;
}else if(sum == 2){
c += '0';
ic = 1;
}
}
while(j >= 0){
ib = b[j --] - '0';
sum = ib + ic;
if(sum == 0) c += '0';
else if(sum == 1){
c += '1';
ic = 0;
}else if(sum == 2){
c += '0';
ic = 1;
}
}
if(ic == 1) c += '1';
reverse(c.begin(), c.end());
return c;
}
};