问题描述:
Given two binary strings, return their sum (also a binary string).
示例:
a = "11"
b = "1"
Return "100"
.
问题分析:
该问题和Plus One类似,详细过程见下面的代码。
class Solution {
public:
string addBinary(string a, string b) {
if(a.length() < b.length()) return addBinary(b, a);// 保证a的长度始终大于等于b
int flag = 0;
string s;
int i = a.length() - 1, j = b.length() - 1;
for(; i >= 0 && j >= 0; i--, j--)
{
int sum = a[i] - '0' + b[j] - '0' + flag;
s.insert(s.begin(), (char)(sum % 2 + '0'));
flag = sum / 2;
}
for(;i >= 0; i--)
{
int sum = a[i] - '0' + flag;
s.insert(s.begin(), (char)(sum % 2 + '0'));
flag = sum / 2;
}
if(flag) s.insert(s.begin(), (char)(flag + '0'));
return s;
}
};