题目描述:
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
class Solution {
public:
string addBinary(string a, string b) {
int len = max(a.size(),b.size());
string s(len+1,'0');//定义一个s字符串用来保存字符串a,b相加的结果
for(int i = a.size(),j = b.size(),k = s.size(),c = 0;i || j || c;c >>= 1)
{
if(i)
{
c += a[--i] -'0';
}
if(j)
{
c += b[--j] -'0';
}
s[--k] = '0'+(c&1);
}
if(s[0] == '0')
{
s.erase(0,1);
}
return s;
}
};