problem:
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 lengtha = a.size();
int lengthb = b.size();
if(lengtha < lengthb)
return addBinary(b, a);
//lengtha > lengthb
string zeros(lengtha-lengthb, '0');
b = zeros + b;
int carry = 0;
for(int i=lengtha-1; i>=0; i--)
{
int sum = (a[i]-'0') + (b[i]-'0') + carry;
if(sum == 0)
{
a[i] = '0';
carry = 0;
}
else if(sum == 1)
{
a[i] = '1';
carry = 0;
}
else if(sum == 2)
{
a[i] = '0';
carry = 1;
}
else
{
a[i] = '1';
carry = 1;
}
}
if(carry == 1)
a = "1" + a;
return a;
}
};