1.题目:简单题
2,思路
模仿十进制加减法,改用二进制加减法去模拟,也就是硬来.哈哈哈哈哈哈.
3,代码
写的有点繁琐了,但是复杂度并没有提高,勉强凑合吧.
class Solution {
public:
string addBinary(string a, string b) {
//模拟一下二进制加法试一下.
int end1=a.size()-1;
int end2=b.size()-1;
string ans;
int flag=0;
while(end1>=0 && end2>=0)
{
int val1=a[end1]-'0';
int val2=b[end2]-'0';
int sum=val1+val2+flag;
if(sum==0)
{
ans+='0';
}
else
if(sum==1)
{
ans+='1';
flag=0;
}else if(sum==2)
{
ans+='0';
flag=1;
}else if(sum==3)
{
ans+='1';
flag=1;
}
end1--;
end2--;
}
while(end1>=0)
{
int val=a[end1]-'0'+flag;
if(val==0)
{
ans+='0';
}else if(val==1)
{
ans+='1';
flag=0;
}else if(val==2)
{
ans+='0';
flag=1;
}else if(val==3)
{
ans+='1';
flag=1;
}
end1--;
}
while(end2>=0)
{
int val=b[end2]-'0'+flag;
if(val==0)
{
ans+='0';
}else if(val==1)
{
ans+='1';
flag=0;
}else if(val==2)
{
ans+='0';
flag=1;
}else if(val==3)
{
ans+='1';
flag=1;
}
end2--;
}
if(flag==1)
ans+='1';
reverse(ans.begin(),ans.end());
return ans;
}
};