Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
class Solution {
public:
string addBinary(string a, string b) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (a == "")
return b;
if (b == "")
return a;
int len1 = a.length();
int len2 = b.length();
int len3 = max(len1, len2);
string ans(len3, '0');
int carry = 0;
int i = len1 - 1;
int j = len2 - 1;
while ((i >= 0) || (j >= 0))
{
char ca = '0';
if (i >= 0)
{
ca = a[i--];
}
char cb = '0';
if (j >= 0)
{
cb = b[j--];
}
int tmp = (ca - '0') + (cb - '0') + carry;
carry = tmp / 2;
tmp = tmp % 2;
ans[--len3] = tmp + '0';
}
if (carry == 1)
{
ans.insert(0, 1, '1');
}
return ans;
}
};