Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
1、
string addBinary(string a, string b) {
if(a.size()==0) return b;
if(b.size()==0) return a;
int carry=0;
if(b.size()>a.size()) swap(a,b);
int indexA=a.size()-1;
int indexB=b.size()-1;
for(;indexA>=0;indexA--)
{
if(indexB>=0)
{
if(a.at(indexA)+b.at(indexB)+carry-2*'0'==0) ;
else
{
if(a.at(indexA)+b.at(indexB)+carry-2*'0'==1)
{
a.at(indexA)='1';
carry=0;
}
else
{
if(a.at(indexA)+b.at(indexB)+carry-2*'0'==2)
a.at(indexA)='0';
else
a.at(indexA)='1';
carry=1;
}
}
indexB--;
}
else
{
if(a.at(indexA)+carry-'0'==0);
else
{
if(a.at(indexA)+carry-'0'==1)
{
a.at(indexA)='1';
carry=0;
}
else
{
a.at(indexA)='0';
carry=1;
}
}
}
}
if(carry==1) a.insert(a.begin(),'1');
return a;
}
2、
string addBinary(string a, string b) {
int carry=0;
int indexA=a.size()-1;
int indexB=b.size()-1;
string result="";
while(indexA>=0||indexB>=0||carry>0)
{
carry+=(indexA>=0?a.at(indexA--)-'0':0)+(indexB>=0?b.at(indexB--)-'0':0);
result.insert(result.begin(),carry%2?'1':'0');
carry=carry/2;
}
return result;
}