思想:
二进制加法。类似高精度加法的做法。
class Solution {
public:
string addBinary(string a, string b) {
if(a == "") return b;
if(b == "") return a;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
string c = "";
int carry = 0;
int i = 0;
for(i = 0; a[i] != '\0' && b[i] != '\0'; ++i) {
int sum = a[i] - '0' + b[i] - '0' + carry;
c.push_back((sum % 2) + '0');
carry = sum / 2;
}
if(a[i] == '\0' && b[i] != '\0') {
for(; b[i] != '\0'; ++i) {
int sum = carry + b[i] - '0';
c.push_back(sum % 2 + '0');
carry = sum / 2;
}
}else if(a[i] != '\0' && b[i] == '\0') {
for(; a[i] != '\0'; ++i) {
int sum = carry + a[i] - '0';
c.push_back(sum % 2 + '0');
carry = sum / 2;
}
}
if(carry != 0) {
c.push_back(carry + '0');
}
reverse(c.begin(), c.end());
return c;
}
};