给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1和num2的长度都小于 5100.
num1和num2都只包含数字0-9.
num1和num2都不包含任何前导零。
- 你不能使用任何內建
BigInteger库, 也不能直接将输入的字符串转换为整数形式。
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
本题思想很简单,就是利用加法原理,对应位相加再加上进位。
有些小细节我们需要注意:
- 两数相加有进位,我们需要新建一个变量存储进位信息
- 注意
int和char的转换,我们给给越界数字串添加的是int 0而不是char '0'
- 最后得到的
stringBuilder需要逆序
具体代码如下:
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
| class Solution { public String addStrings(String num1, String num2) { int index1 = num1.length() - 1; int index2 = num2.length() - 1;
int count = 0;
StringBuilder stringBuilder = new StringBuilder();
while (index1 >= 0 || index2 >= 0 || count != 0) { int i = index1 < 0 ? 0 : num1.charAt(index1) - '0'; int j = index2 < 0 ? 0 : num2.charAt(index2) - '0';
int temp = i + j + count; stringBuilder.append(temp % 10); count = temp / 10; index1--; index2--; } stringBuilder.reverse(); return stringBuilder.toString(); } }
|