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) {
if(a.length() == 0)
{
return b;
}
if(b.length() == 0)
{
return a;
}
int lena = a.length();
int lenb = b.length();
int i = lena-1;
int j = lenb-1;
int carry = 0;
int sum = 0;
string c = "";
while(i >= 0 && j >= 0)
{
sum = (a[i] - '0') + (b[j] - '0') + carry;
carry = sum > 1 ? 1 : 0;
sum = sum > 1 ? sum - 2 : sum;
c = sum == 0 ? '0' + c : '1' + c;
i --;
j --;
}
while(i >= 0)
{
sum = carry + (a[i] - '0');
carry = sum > 1 ? 1 : 0;
sum = sum > 1 ? sum - 2 : sum;
c = sum == 0 ? '0' + c : '1' + c;
i--;
}
while(j >= 0)
{
sum = carry + (b[j] - '0');
carry = sum > 1 ? 1 : 0;
sum = sum > 1 ? sum - 2 : sum;
c = sum == 0 ? '0' + c : '1' + c;
j--;
}
if(carry == 1)
{
c = '1' + c;
}
return c;
}
};