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) {
string ans;
ans.reserve(max(a.size(), b.size()) + 1);
for (int i=a.size()-1, j=b.size()-1, carry = 0; i>=0 || j>=0 || carry; i--, j--) {
const int sum = (i>=0 ? a[i]-'0': 0) + (j>=0 ? b[j]-'0' : 0) + carry;
ans.push_back(sum % 2 + '0');
carry = sum / 2;
}
std::reverse(ans.begin(), ans.end());
return ans;
}
};