Keshawn_lu's Blog

Leetcode 415. 字符串相加

字数统计: 233阅读时长: 1 min
2020/08/03 Share

题目简介:

给定两个字符串形式的非负整数 num1num2 ,计算它们的和。

注意:

  1. num1num2 的长度都小于 5100.
  2. num1num2 都只包含数字 0-9.
  3. num1num2 都不包含任何前导零。

思路:

模拟竖式相加,首先通过前缀补0的方式使两个字符串拥有相同的长度。

然后从后往前,一位一位模拟相加,若有进位,则flag = 1

最后相加结束后,若flag = 1,则最后存在进位,res = '1' + res即可。

代码如下:

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
class Solution {
public:
string addStrings(string num1, string num2) {

string res;

while(num1.size() < num2.size()){

num1 = '0' + num1;
}

while(num2.size() < num1.size()){

num2 = '0' + num2;
}

int flag = 0;
for(int i = num1.size() - 1; i >= 0; i--){

int add = num1[i] - '0' + num2[i] - '0';

if(flag == 1){

add++;
flag = 0;
}

if(add >= 10){

add -= 10;
flag = 1;
}

res = to_string(add) + res;
}

if(flag == 1)
res = '1' + res;

return res;

}
};
CATALOG
  1. 1. 题目简介:
  2. 2. 思路:
  3. 3. 代码如下: