415. 字符串相加

题目

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

示例 1:

1
2
输入:num1 = "11", num2 = "123"
输出:"134"

示例 2:

1
2
输入:num1 = "456", num2 = "77"
输出:"533"

示例 3:

1
2
输入:num1 = "0", num2 = "0"
输出:"0"
1
2
3
4
提示:
1 <= num1.length, num2.length <= 104
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零

思路

就是模拟加法,如果大于10进行取模,结果都保存到字符串中,最后反转字符串

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private static class Solution {
public String addStrings(String num1, String num2) {
StringBuilder res = new StringBuilder();
int left = num1.length() - 1;
int right = num2.length() - 1;
int carry = 0;
while (left >= 0 || right >= 0) {
int a = left >= 0 ? num1.charAt(left) - '0' : 0;
int b = right >= 0 ? num2.charAt(right) - '0' : 0;
int temp = a + b + carry;
carry = temp / 10;
res.append(temp % 10);
left--;
right--;
}
if (carry == 1){
res.append(1);
}

return res.reverse().toString();
}
}