Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
这道题要求模拟二进制加法。
当a和b字符串不一样长的时候,考虑起来不方便,因此通过左边加‘0’的方式将字符串变成等长,然后相加。
class Solution
{
public:
int add(char a, char b)
{
return (a -'0')+(b -'0');
}
string addBinary(string a, string b)
{
bool flag = false; //进位标志
int alen = a.length();
int blen = b.length();
int len = alen;
//使得两个字符串一样长
if(alen > blen)
{
len = alen;
string temp(alen-blen,'0');
b = temp + b;
}
else if(blen > alen)
{
len = blen;
string temp(blen-alen,'0');
a = temp + a;
}
int clen = len+1;
string c(clen,'0');
int temp;
int i=0;
for(i=0; i<len; i++)
{
temp = add(a[len-1-i],b[len-1-i]);
if(flag)
{
temp = temp + 1;
flag = false;
}
switch(temp)
{
case 3: c[clen-1-i] = '1'; flag = true; break;
case 2: c[clen-1-i] = '0'; flag = true; break;
case 1: c[clen-1-i] = '1'; break;
case 0: c[clen-1-i] = '0'; break;
}
}
if(flag)
c[clen-1-i] = '1';
else
c.erase(clen-1-i,clen-i);
return c;
}
};