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) {
bool carry = false;
const int LenA = a.size();
const int LenB = b.size();
const int MaxLen = max(LenA, LenB);
string ret;
ret.resize(MaxLen);
for(int i = 1; i <= MaxLen; ++i)
{
char ca = (LenA - i >= 0 ? a[LenA - i] - '0' : 0);
char cb = (LenB - i >= 0 ? b[LenB - i] - '0' : 0);
switch(ca + cb + carry)
{
case 3:
ret[MaxLen - i] = '1';
carry = true;
break;
case 2:
ret[MaxLen - i] = '0';
carry = true;
break;
case 1:
ret[MaxLen - i] = '1';
carry = false;
break;
case 0:
ret[MaxLen - i] = '0';
carry = false;
break;
}
}
if (carry)
ret = string("1") + ret;
return ret;
}
};