题目简介:
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
注意:
num1
和num2
的长度都小于 5100.
num1
和num2
都只包含数字 0-9
.
num1
和num2
都不包含任何前导零。
思路:
模拟竖式相加,首先通过前缀补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;
} };
|