File tree 1 file changed +19
-23
lines changed
1 file changed +19
-23
lines changed Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public:
3
3
string addBinary (string a, string b) {
4
- // Start typing your C/C++ solution below
5
- // DO NOT write int main() function
6
-
7
4
string c;
8
- int len_a = a. size ( );
9
- int len_b = b. size ( );
5
+ reverse (a. begin (), a. end () );
6
+ reverse (b. begin (), b. end () );
10
7
int carry = 0 ;
11
- for (int i = 0 ; i < min (len_a, len_b); i++) {
12
- int x = a[len_a - i - 1 ] - ' 0' ;
13
- int y = b[len_b - i - 1 ] - ' 0' ;
14
- c += (x + y + carry) % 2 + ' 0' ;
15
- carry = (x + y + carry) / 2 ;
8
+ int i = 0 ;
9
+ while (i < a.size () && i < b.size ()) {
10
+ carry += a[i] - ' 0' + b[i] - ' 0' ;
11
+ c += carry % 2 + ' 0' ;
12
+ carry /= 2 ;
13
+ i++;
16
14
}
17
- if (len_a > len_b) {
18
- for (int i = len_b; i < len_a; i++) {
19
- int x = a[len_a - i - 1 ] - ' 0' ;
20
- c += (x + carry) % 2 + ' 0' ;
21
- carry = (x + carry) / 2 ;
22
- }
15
+ while (i < a.size ()) {
16
+ carry += a[i] - ' 0' ;
17
+ c += carry % 2 + ' 0' ;
18
+ carry /= 2 ;
19
+ i++;
23
20
}
24
- else if (len_a < len_b) {
25
- for (int i = len_a; i < len_b; i++) {
26
- int x = b[len_b - i - 1 ] - ' 0' ;
27
- c += (x + carry) % 2 + ' 0' ;
28
- carry = (x + carry) / 2 ;
29
- }
21
+ while (i < b.size ()) {
22
+ carry += b[i] - ' 0' ;
23
+ c += carry % 2 + ' 0' ;
24
+ carry /= 2 ;
25
+ i++;
30
26
}
31
27
while (carry) {
32
28
c += carry % 2 + ' 0' ;
@@ -35,4 +31,4 @@ class Solution {
35
31
reverse (c.begin (), c.end ());
36
32
return c;
37
33
}
38
- };
34
+ };
You can’t perform that action at this time.
0 commit comments