一、题目:
67.二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
示例1:
示例2:
二、思路:
先将两个字符串反过来,每位依次相加得到字符串c;再对c每一位进行判断,如果为'2',则c[i]-2,c[i+1]+1;最后返回c
三、代码(C++):
string addBinary(string a, string b) {
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
string c =(a.size() >= b.size()) ? a : b;
if (a.size() < b.size())
{
for (int j = 0; j<a.size(); j++)
c[j] = a[j] + (b[j] - '0');
}
else
{
for (int j = 0; j<b.size(); j++)
c[j] = a[j] + (b[j] - '0');
}
for (int k = 0; k<c.size()-1; k++)
{
if (c[k] > '1')
{
c[k] -= 2;
c[k + 1] += 1;
}
}
if (c[c.size() - 1] > '1')
{
c[c.size() - 1] -= 2;
c.push_back('1');
}
reverse(c.begin(), c.end());
return c;
}