给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
方法:逐位相加,逢二进一
class Solution {
public:
string addBinary(string a, string b) {
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int lena = a.length();
int lenb = b.length();
if(lena < lenb) //较短的字符串用0补齐
a.append(lenb-lena, '0');
else
b.append(lena-lenb, '0');
int flag = 0;
string c = "";
for(int i = 0; i < a.length(); i++) {
flag += (a[i] == '1' ? 1:0);
flag += (b[i] == '1' ? 1:0);
c += (flag % 2) ? '1' : '0';
flag = flag/2;
}
if(flag)
c += '1';
reverse(c.begin(), c.end());
return c;
}
};