思路:从两个字符串的末尾开始逐个取字符并转换为数字,并且考虑进位。若其中一个字符已经取完,而另一个没取完,则将已经取完的字符用0代替,直到两个字符全部取完。最后如果进位为1,则需要在最后的结果前面加1。
class Solution {
public:
string addBinary(string a, string b) {
string ans;
int m=a.size()-1,n=b.size()-1;
int carrybit=0;
while(m>=0||n>=0)
{
int p=m>=0?a[m--]-'0':0;
int q=n>=0?b[n--]-'0':0;
int sum=p+q+carrybit;
ans=to_string(sum%2)+ans;
carrybit=sum/2;
}
if(carrybit) ans="1"+ans;
return ans;
}
};