File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11class Solution {
22public:
33 string addBinary (string a, string b) {
4- // Start typing your C/C++ solution below
5- // DO NOT write int main() function
6-
74 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 () );
107 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++;
1614 }
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++;
2320 }
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++;
3026 }
3127 while (carry) {
3228 c += carry % 2 + ' 0' ;
@@ -35,4 +31,4 @@ class Solution {
3531 reverse (c.begin (), c.end ());
3632 return c;
3733 }
38- };
34+ };
You can’t perform that action at this time.
0 commit comments