-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAdd_Binary_Strings.cpp
66 lines (66 loc) · 1.53 KB
/
Add_Binary_Strings.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
56
57
58
59
60
61
62
63
64
65
66
// User function template for C++
class Solution {
public:
string addBinary(string& s1, string& s2) {
if(s1.size() < s2.size()){
return addBinary(s2, s1);
}
int n = s1.size()-1;
int m = s2.size()-1;
int carry = 0;
string s = "";
while(n>=0 && m>=0){
if(s1[n] == '1' && s2[m] == '1'){
if(carry == 1){
s = "1" + s;
}
else{
s = "0" + s;
}
carry=1;
}
else if(s1[n] == '0' && s2[m] == '0'){
if(carry == 1){
s = "1" + s;
carry=0;
}
else{
s = "0" + s;
}
}
else{
if(carry == 1){
s = "0" + s;
}
else{
s = "1" + s;
}
}
n--;
m--;
}
while(n>=0){
if(carry == 1){
if(s1[n] == '1'){
s = "0" + s;
}else{
s = "1" + s;
carry = 0;
}
}
else{
s = s1[n] + s;
}
n--;
}
if(carry == 1){
s = "1" + s;
carry = 0;
}
while(s[carry] == '0'){
carry++;
}
s.erase(0, carry);
return s;
}
};