Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
很简单的思路,ab都从最后一位开始,初始化c=0为进位,三个数异或得到新的值存入res中,再判断一下c应该是1还是0. 当ab有一个走到尽头后把另一个剩下的部分加进去。
最后reverse整个字符串。
class Solution {
public:
string addBinary(string a, string b) {
int m=a.size()-1;
int n=b.size()-1;
int c=0;
string res="";
while(m>=0&&n>=0){
int p=a[m]-'0';
int q=b[n]-'0';
res+=(p^q)^c+'0';
c=p+q+c>1?1:0;
m--;
n--;
}
for(m;m>=0;m--){
int p=a[m]-'0';
res+=p^c+'0';
c=p&c;
}
for(n;n>=0;n--){
int p=b[n]-'0';
res+=p^c+'0';
c=p&c;
}
if(c) res+=c+'0';
reverse(res.begin(),res.end());
return res;
}
};