给定两个字符串形式的非负整数 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 <= num1.length, num2.length <= 104
num1
和num2
都只包含数字 0-9
num1
和num2
都不包含任何前导零
模拟法
将两个数右对齐进行加法操作
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public String addStrings(String num1, String num2) { int i = num1.length()-1; int j = num2.length()-1; int add = 0; StringBuilder ans = new StringBuilder(); while(i >= 0 || j >= 0 || add != 0){ int x = i >= 0? num1.charAt(i) - '0' : 0; int y = j >= 0? num2.charAt(j) - '0' : 0; int sum = x + y + add; add = sum/10; ans.append(sum % 10); i--; j--; }
return ans.reverse().toString();
} }
|
时间复杂度:$O(max(len1,len2))$
空间复杂度:$O(1)$