67.Add Binary
67.Add Binary
难度:Easy
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1" 输出: "100" 示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
按普通加法一位一位算,留一个进位标志。
1
class Solution {
2
public:
3
string addBinary(string a, string b) {
4
a='0'+a;
5
b='0'+b;
6
// cout<<a<< " " <<b <<endl;
7
if(a.length()>b.length())
8
{
9
int tmp=a.length()-b.length();
10
while(tmp--)
11
b= '0'+b;
12
13
}
14
else if(a.length()<b.length())
15
{
16
int tmp=b.length()-a.length();
17
while(tmp--)
18
a='0' +a;
19
}
20
// cout<<a<< " " <<b <<endl;
21
bool flag=false;
22
int len=a.length();
23
string res;
24
for(int i=len-1;i>0;i--)
25
{
26
if(a[i] ^ b[i])
27
{
28
if(flag)
29
res='0'+res;
30
else
31
res = '1'+res;
32
}
33
else
34
{
35
if(a[i]=='0')
36
{
37
if(flag)
38
{
39
res= '1'+res;
40
flag=false;
41
}
42
else
43
res= '0'+res;
44
}
45
else
46
{
47
if(flag)
48
res= '1'+res;
49
else
50
{
51
res='0'+res;
52
flag=true;
53
}
54
}
55
}
56
}
57
if(flag) res='1'+res;
58
return res;
59
}
60
};
Copied!
执行用时 :16 ms, 在所有 C++ 提交中击败了24.74%的用户 内存消耗 :9.3 MB, 在所有 C++ 提交中击败了6.03%的用户
Last modified 5mo ago
Copy link