Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
题意是将两个二进制串相加
本题与上题类似,都是从后向前相加,维护一个进位。写的比较繁琐
class Solution {
public:
string addBinary(string a, string b)
{
int n1 = a.size();
int n2 = b.size();
int jinwei = 0;
string result;
string res="";
int i, j;
for (i = n1 - 1, j = n2 - 1; i >= 0 && j >= 0; i--, j--)
{
int num = (a[i] - '0') + (b[j] - '0') + jinwei;
if (num > 1)
{
res = res + char(num - 2+'0');
jinwei = 1;
}
else
{
res = res + char(num + '0');
jinwei = 0;
}
}
//检查i,j有没有没运行完的
if (i >= 0)
{
while (i >= 0)
{
int num = (a[i] - '0') + jinwei;
if (num > 1)
{
res = res + char(num - 2 + '0');
jinwei = 1;
}
else
{
res = res + char(num + '0');
jinwei = 0;
}
i--;
}
}
if (j >= 0)
{
while (j >= 0)
{
int num = (b[j] - '0') + jinwei;
if (num > 1)
{
res = res + char(num - 2 + '0');
jinwei = 1;
}
else
{
res = res + char(num + '0');
jinwei = 0;
}
j--;
}
}
//检查进位
if (jinwei == 1)
res = res + '1';
//最后从后向前打印输出
for (int k = res.size() - 1; k >= 0; k--)
{
result = result + res[k];
}
return result;
}
};