Add Binary
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) {
int la = a.size(), lb = b.size();
int len = max(la, lb) + 2;
char* res = new char[len];
memset(res, 0, len);
int left = 0, cur;
int ia = la - 1, ib = lb - 1, ic = len - 2;
while (ia >= 0 && ib >= 0) {
cur = a[ia--] + b[ib--] - 2 * '0' + left;
if (cur > 1) {
res[ic--] = '0' + cur % 2;
left = 1;
} else {
res[ic--] = '0' + cur;
left = 0;
}
}
while (ia >= 0) {
cur = a[ia--] - '0' + left;
if (cur > 1) {
res[ic--] = '0' + cur % 2;
left = 1;
} else {
res[ic--] = '0' + cur;
left = 0;
}
}
while (ib >= 0) {
cur = b[ib--] + left - '0';
if (cur > 1) {
res[ic--] = '0' + cur % 2;
left = 1;
} else {
res[ic--] = '0' + cur;
left = 0;
}
}
if (left > 0) res[ic--] = '1';
return string(res+ic+1);
}
};