注意进位
时间复杂度:O(N)(N = max{a.length(),b.length()})
C++代码:
class Solution {
public:
string addBinary(string a, string b) {
if (a.length() >= b.length())
{
a.insert(a.begin(), '0');
auto it_b = b.end();
auto it_a = a.end();
while (it_b > b.begin())
{
it_b--;
it_a--;
*it_a += *it_b - '0';
if (*it_a > '1')
{
*it_a -= 2;
*(it_a - 1) += 1;
}
}
while (it_a > a.begin())
{
it_a--;
if (*it_a > '1')
{
*it_a -= 2;
*(it_a - 1) += 1;
}
}
if (a[0] == '0')
a.erase(a.begin());
return a;
}
else
return addBinary(b, a);
}
};