题目描述:
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1" 输出: "100"
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
AC C++ Solution:
class Solution
{
public:
string addBinary(string a, string b)
{
string s = "";
int c = 0, i = a.size() - 1, j = b.size() - 1; // c用来记录对应位相加的数字以及进位
while(i >= 0 || j >= 0 || c == 1)
{
c += i >= 0 ? a[i --] - '0' : 0; //加上a[i]或0
c += j >= 0 ? b[j --] - '0' : 0; //加上b[j]或0
s = char(c % 2 + '0') + s; //s一定在后加
c /= 2; //c若为2,则在下一次循环中c初始值为1.
}
return s;
}
};