原题链接:Leetcode 67. 二进制求和
class Solution {
public:
string addBinary(string a, string b) {
if(a.size()<b.size()) swap(a,b);
int na=a.size(),nb=b.size();
int in=0;
for(int i=nb-1,j=na-1;i>=0;i--,j--)
{
int tmp;
if(b[i]=='1') tmp=1+in;
else if(b[i]=='0') tmp=in;
if(a[j]=='1') tmp+=1;
if(tmp==0)
{
a[j]='0'; in=0;
}
else if(tmp==1)
{
a[j]='1'; in=0;
}
else if(tmp==2)
{
a[j]='0'; in=1;
}
else if(tmp==3)
{
a[j]='1'; in=1;
}
}
for(int i=na-nb-1;i>=0;i--)
{
int tmp=in;
if(a[i]=='1') tmp+=1;
if(tmp==0)
{
a[i]='0'; in=0;
}
else if(tmp==1)
{
a[i]='1'; in=0;
}
else if(tmp==2)
{
a[i]='0'; in=1;
}
}
if(in==1) a.insert(0,"1");
return a;
}
};