Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
又是一道水题,无非从尾加到头,对长的串特殊处理一下。
class Solution {
public:
string addBinary(string a, string b) {
int la=a.size()-1;
int lb=b.size()-1;
int flag=0;
string result;
while(la>=0&&lb>=0){
int v=a[la]-'0'+b[lb]-'0'+flag;
flag=v/2;
int r=v%2;
if(r==1)
result+='1';
else
result+='0';
la--;
lb--;
}
while(la>=0){
int v=a[la]-'0'+flag;
flag=v/2;
int r=v%2;
if(r==1)
result+='1';
else
result+='0';
la--;
}
while(lb>=0){
int v=b[lb]-'0'+flag;
flag=v/2;
int r=v%2;
if(r==1)
result+='1';
else
result+='0';
lb--;
}
if(flag)
result+='1';
reverse(result.begin(),result.end());
return result;
}
};