-
Notifications
You must be signed in to change notification settings - Fork 0
/
Add Binary LC-67.cpp
55 lines (55 loc) · 1.39 KB
/
Add Binary LC-67.cpp
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
55
// tc=o(n+n+n)
// sc=o(n)
class Solution {
public:
string addBinary(string a, string b) {
string op="";
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
if(a.size()<b.size()) swap(a,b);
char carry='0';
for(int i=0;i<b.size();i++){
if(carry=='1'){
if(a[i]!=b[i]){
carry='1';
op+='0';
}else if(a[i]=='1'){
carry='1';
op+='1';
}else{
carry='0';
op+='1';
}
}else{
if(a[i]!=b[i]){
carry='0';
op+='1';
}else if(a[i]=='1'){
carry='1';
op+='0';
}else{
carry='0';
op+='0';
}
}
}
int i=b.size();
while(i<a.size()){
if(carry=='1' && a[i]=='1'){
op+='0';
carry='1';
}else if(carry=='1' && a[i]=='0'){
op+='1';
carry='0';
}else if(a[i]=='1'){
op+='1';
}else{
op+='0';
}
i++;
}
if(carry=='1') op+='1';
reverse(op.begin(),op.end());
return op;
}
};