题目
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
- 来源:力扣(LeetCode)
- 链接:leetcode.cn/problems/ad…
- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一
思路
- 倒着来
- 注意最后一个进位数。比如测试用例num1="1",num2="9"
代码
public String addStrings(String num1, String num2) {
char[] n1 = num1.toCharArray();
char[] n2 = num2.toCharArray();
int i = n1.length - 1;
int j = n2.length - 1;
int last = 0;
StringBuilder res = new StringBuilder();
while (i >= 0 || j >= 0 || last != 0) {
int a = i >= 0 ? n1[i] - '0' : 0;
int b = j >= 0 ? n2[j] - '0' : 0;
int t = a + b + last;
res.append(t % 10);
last = t / 10;
i--;
j--;
}
return res.reverse().toString();
}
复杂度
- 时间复杂度:O(n)
- 空间复杂度:O(n)