解法一:
class Solution {
public:
string addBinary(string a, string b) {
string c;
const size_t n=a.size()>b.size()?a.size():b.size();
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int carry=0;
for(int i=0;i<n;i++)
{
int ai=i<a.size()?a[i]-'0':0;
int bi=i<b.size()?b[i]-'0':0;
int val=(ai+bi+carry)%2;
carry=(ai+bi+carry)/2;
c.insert(c.begin(),val+'0');
}
if(carry==1)
c.insert(c.begin(),'1');
return c;
}
};
解法二:
class Solution {
public:
string addBinary(string a, string b) {
string r="";
int i=a.size()-1,j=b.size()-1,c=0;
while(i>=0 || j>=0 || c==1)
{
c+=i>=0?a[i--]-'0':0;
c+=j>=0?b[j--]-'0':0;
r=char(c%2+'0')+r;
c=c/2;
}
return r;
}
};