0%

67. 二进制求和

67. 二进制求和

模拟

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
class Solution {
public:
string addBinary(string a, string b) {
int m = a.size(), n = b.size();
int i = m - 1, j = n - 1;
string ret;
int c = 0;
while(i >= 0 && j >= 0)
{
int sum = a[i--] - '0' + b[j--] - '0' + c;
c = sum / 2;
ret += sum % 2 + '0';
}
while(c)
{
int sum;
if(i >= 0)
sum = a[i--] - '0' + c;
else if(j >= 0)
sum = b[j--] - '0' + c;
else
sum = c;
c = sum / 2;
ret += sum % 2 + '0';
}
reverse(ret.begin(), ret.end());
if(i >= 0)
ret = a.substr(0, i + 1) + ret;
if(j >= 0)
ret = b.substr(0, j + 1) + ret;
return ret;
}
};