思路:从a,b两个字符串的低位向高位计算,考虑 “1”+“1” 、 “0”+“0” 、以及“0”+“1” 情况
并用一个flag记录进位
class Solution {
public:
string addBinary(string a, string b) {
if(a=="")
return b;
else if(b=="")
return a;
int al=a.size()-1;
int br=b.size()-1;
string result="";
char flag='0';
while(al>=0&&br>=0)
{
if(flag=='0')
{
if(a[al]=='0'&&b[br]=='0')
result.insert(0,"0");
else if(a[al]=='1'&&b[br]=='1')
{result.insert(0,"0");
flag='1';}
else
result.insert(0,"1");
}
else
{
flag='0';
if(a[al]=='0'&&b[br]=='0')
result.insert(0,"1");
else if(a[al]=='1'&&b[br]=='1')
{result.insert(0,"1");
flag='1';}
else
{result.insert(0,"0");
flag='1';}
}
al--;
br--;
}
while(al>=0)
{
if(flag=='1')
{
flag='0';
if(a[al]=='0')
result.insert(0,"1");
else if(a[al]=='1')
{
result.insert(0,"0");
flag='1';
}
}
else
{
if(a[al]=='0')
result.insert(0,"0");
else
result.insert(0,"1");
}
al--;
}
while(br>=0)
{
if(flag=='1')
{
flag='0';
if(b[br]=='0')
result.insert(0,"1");
else if(b[br]=='1')
{
result.insert(0,"0");
flag='1';
}
}
else
{
if(b[br]=='0')
result.insert(0,"0");
else
result.insert(0,"1");
}
br--;
}
if(flag=='1')
result.insert(0,"1");
return result;
}
};