Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1
or 0
.
Example 1:
Input: a = "11", b = "1" Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101"
class Solution {
public:
string addBinary(string a, string b)
{
if(a == "0" || a.size()==0)
return b;
if(b == "0" || b.size() == 0)
return a;
string result;
int i = a.size() - 1, j = b.size() - 1;
int aa, bb, rem, carry;
aa = bb = rem = carry = 0;
while((i >= 0) || (j >= 0))
{
aa = i < 0 ? 0 : a[i] - '0';
bb = j < 0 ? 0 : b[j] - '0';
rem = (aa + bb + carry)%2;
carry = (aa + bb + carry)/2;
result.push_back(rem + '0');
//将数值转换为字符串
i--;
j--;
}
if(carry == 1)
result.push_back('1');
reverse(result.begin(), result.end());
return result;
}
};