Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
给出两个二进制数表示的字符串,要求计算它们的和,并返回字符串,水题,注意一下字符串的范围是0至size-1即可。
class Solution {
public:
string addBinary(string a, string b) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
int a_len=a.size();
int b_len=b.size();
string s="";
char weight='0';
int i=a_len-1,j=b_len-1;
for(;i>=0&&j>=0;i--,j--)
{
if(weight=='0')
{
if(a[i]=='0'&&b[j]=='0')
{
s+='0';
weight='0';
}
else if(a[i]=='1'&&b[j]=='1')
{
s+='0';
weight='1';
}
else
{
s+='1';
weight='0';
}
}
else
{
if(a[i]=='0'&&b[j]=='0')
{
s+='1';
weight='0';
}
else if(a[i]=='1'&&b[j]=='1')
{
s+='1';
weight='1';
}
else
{
s+='0';
weight='1';
}
}
}
while(i>=0)
{
if(weight=='0')
{
s+=a[i];
weight='0';
}
else
{
if(a[i]=='0')
{
s+='1';
weight='0';
}
else
{
s+='0';
weight='1';
}
}
i--;
}
while(j>=0)
{
if(weight=='0')
{
s+=b[j];
weight='0';
}
else
{
if(b[j]=='0')
{
s+='1';
weight='0';
}
else
{
s+='0';
weight='1';
}
}
j--;
}
if(weight=='1')
s+='1';
string res="";
for(int k=s.size()-1;k>=0;k--)
{
res+=s[k];
}
return res;
}
};