Skip to content

Commit 5214d7c

Browse files
committed
Time: 3 ms (63.04%) | Memory: 10.1 MB (33.77%) - LeetSync
1 parent fec68c8 commit 5214d7c

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

‎415-add-strings/add-strings.cpp‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
class Solution {
2+
public:
3+
string addStrings(string num1, string num2) {
4+
int n1 = num1.size();
5+
int n2 = num2.size();
6+
string re;
7+
unordered_map<int, char> intChar = {
8+
{1, '1'}, {2, '2'}, {3, '3'}, {4, '4'}, {5, '5'}, {6, '6'}, {7, '7'}, {8, '8'}, {9, '9'}, {0, '0'}
9+
};
10+
11+
if (n1 >= n2){
12+
int diff = n1-n2;
13+
string di;
14+
for(int i=1; i<=diff; i++){
15+
di.push_back('0');
16+
}
17+
num2 = di+num2;
18+
cout<<num2;
19+
int carry=0;
20+
for (int i=n1-1; i>=0; i--){
21+
int r = num1[i]-'0';
22+
r += (num2[i]-'0') + carry;
23+
if (r<=9){
24+
carry=0;
25+
re.push_back(intChar[r]);
26+
} else {
27+
carry=1;
28+
r = r-10;
29+
re.push_back(intChar[r]);
30+
}
31+
}
32+
if (carry==1) re.push_back('1');
33+
reverse(re.begin(), re.end());
34+
return re;
35+
} else {
36+
int diff = n2-n1;
37+
string di;
38+
for(int i=1; i<=diff; i++){
39+
di.push_back('0');
40+
}
41+
num1 = di+num1;
42+
cout<<num1;
43+
int carry=0;
44+
for (int i=n2-1; i>=0; i--){
45+
int r = num1[i]-'0';
46+
r += (num2[i]-'0') + carry;
47+
if (r<=9){
48+
carry=0;
49+
re.push_back(intChar[r]);
50+
} else {
51+
carry=1;
52+
r = r-10;
53+
re.push_back(intChar[r]);
54+
}
55+
}
56+
if (carry==1) re.push_back('1');
57+
reverse(re.begin(), re.end());
58+
return re;
59+
}
60+
}
61+
};

0 commit comments

Comments
 (0)