题目

  1. Given two binary strings, return their sum (also a binary string).

    For example,
    a = "11"
    b = "1"
    Return "100".

大意

二进制加法

答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Solution {
public:
string addBinary(string a, string b) {
int sizea = a.size();
int sizeb = b.size();
if(sizea < sizeb)
return addBinary(b, a);
string zeros(sizea-sizeb, '0');
b = zeros + b;
int carry = 0;
for(int i = sizea-1; i >= 0; i --)
{
int sum = (a[i]-'0') + (b[i] - '0') + carry;
if(sum == 0) ;
else if(sum == 1)
{
a[i] = '1';
carry = 0;
}
else if(sum == 2)
{
a[i] = '0';
carry = 1;
}
else
{//sum == 3 (1+1+1)
a[i] = '1';
carry = 1;
}
}
if(carry == 1)
a = "1" + a;
return a;
}
};

思路

先补齐0,然后相加.