Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
例如a = 11,b = 1,应当返回 100
为什么这道题写得这么丑,因为我用了大量的复制粘贴,然后懒得改了。。。←_←不过没想到在字符串中插数字这么麻烦,还得先把数字转换成字符串然后再插入。。。
class Solution {
public:
string addBinary(string a, string b) {
int temp=0;
string ans;
int aleng=a.length(),bleng=b.length();
if(a.length()==0&&b.length()==0) return ans;
if(b.length()>a.length())
for(int i=0;i<bleng-aleng;i++)
a.insert(0,"0");
else
for(int i=0;i<aleng-bleng;i++)
b.insert(0,"0");
cout<<"a="<<a<<"\nb="<<b<<endl;
for(int i=a.length()-1;i>0;i--)
{
int it=a[i]-'0'+b[i]-'0'+temp;
if(it>=2)
{
char c[2];
string s;
sprintf(c,"%d",it-2);
s=c;
ans.insert(0,s);
temp=1;
}
else
{
char c[2];
string s;
sprintf(c,"%d",it);
s=c;
ans.insert(0,s);
temp=0;
}
}
int it=a[0]-'0'+b[0]-'0'+temp;
if(it>=2)
{
char c[2];
string s;
sprintf(c,"%d",it-2);
s=c;
ans.insert(0,s);
ans.insert(0,"1");
}
else
{
char c[2];
string s;
sprintf(c,"%d",it);
s=c;
ans.insert(0,s);
}
return ans;
}
};