这是自家的代码
string addBinary(string a, string b) {
int lena=a.size();
int lenb=b.size();
if(lena==0)
return b;
if(lenb==0)
return a;
lena--;
lenb--;
string r="";
bool carry=false;
while(lena>=0&&lenb>=0)
{
if((a[lena]=='0'&&b[lenb]=='0')||(a[lena]=='1'&&b[lenb]=='1'))
{
if(carry)
r="1"+r;
else
r="0"+r;
if(a[lena]=='1'&&b[lenb]=='1')
{
carry=true;
}
else
carry=false;
}
else
{
if(carry)
{
r="0"+r;
carry=true;
}
else
{
r="1"+r;
carry=false;
}
}
lena--;
lenb--;
}
while(lena>=0)
{
if(!carry)
{
r=a[lena]+r;
}
else
{
if(a[lena]=='0')
{
r='1'+r;
carry=false;
}
else
{
r='0'+r;
carry=true;
}
}
lena--;
}
while(lenb>=0)
{
if(!carry)
{
r=b[lenb]+r;
}
else
{
if(b[lenb]=='0')
{
r='1'+r;
carry=false;
}
else
{
r='0'+r;
carry=true;
}
}
lenb--;
}
if(carry)
r='1'+r;
return r;
}
这是别人家的代码:
string addBinary(string a, string b)
{
string s = "";
int c = 0, i = a.size() - 1, j = b.size() - 1;
while(i >= 0 || j >= 0 || c == 1)
{
c += i >= 0 ? a[i --] - '0' : 0;
c += j >= 0 ? b[j --] - '0' : 0;
s = char(c % 2 + '0') + s;
c /= 2;
}
return s;
}
啥也不想说了