1.描述
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".
2.分析
3.代码
class Solution {
public:
string addBinary(string a, string b) {
int ida = a.length();
int idb = b.length();
if (0 == ida || 0 == idb) return 0 == ida ? b : a;
if (ida < idb) {
a.swap(b);
int tmp = ida;
ida = idb;
idb = tmp;
}
string sum = "";
bool carry = false;
--ida; --idb;
while (0 <= ida) {
if (idb < 0) {
if ('1' == a[ida] && carry) {
sum.insert(sum.begin(), '0');
carry = true;
} else {
sum.insert(sum.begin(), '1' == a[ida] || carry ? '1' : '0');
carry = false;
}
--ida;
} else {
if ('1' == a[ida] && '1' == b[idb]) {
sum.insert(sum.begin(), carry ? '1' : '0');
carry = true;
} else if ('1' == a[ida] || '1' == b[idb]) {
sum.insert(sum.begin(), carry ? '0' : '1');
carry = carry ? true : false;
} else {
sum.insert(sum.begin(), carry ? '1' : '0');
carry = false;
}
--ida;
--idb;
}
}
if (carry) sum.insert(sum.begin(),'1');
return sum;
}
};