Leetcode-67.二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0。

示例 1:

输入: a = “11”, b = “1”
输出: “100”
示例 2:

输入: a = “1010”, b = “1011”
输出: “10101”

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法1:模拟

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Solution {
public:
string addBinary(string a, string b) {
int n=a.size(),m=b.size();
int i=n-1,j=m-1;
int k=0;
int temp,t1,t2;
string c;
char ch;
while(i>=0&&j>=0)
{
t1=a[i]-'0';
t2=b[j]-'0';
temp=t1+t2+k;
k=temp/2;
temp%=2;
ch=temp+'0';
c+=ch;

i--;
j--;
}

while(i>=0)
{
t1=a[i]-'0';
temp=t1+k;
k=temp/2;
temp%=2;
ch=temp+'0';
c+=ch;
i--;
}
while(j>=0)
{
t2=b[j]-'0';
temp=t2+k;
k=temp/2;
temp%=2;
ch=temp+'0';
c+=ch;
j--;
}

if(k!=0)
{
ch=k+'0';
c+=ch;
}

reverse(c.begin(),c.end());
return c;
}
};