Skip to content

Commit 24a32c9

Browse files
committed
2
1 parent 40f3ee9 commit 24a32c9

File tree

1 file changed

+19
-23
lines changed

1 file changed

+19
-23
lines changed

AddBinary/AddBinary.cpp

+19-23
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,28 @@
11
class Solution {
22
public:
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+
};

0 commit comments

Comments
 (0)