题目链接
题目描述:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
解题思路
从num1
和num2
末尾开始遍历,逐位相加。主要有四方面需要考虑:
- 进位计算:
carry = temp / 10
表示当前位相加之后的进位结果 - 计算当前位:
temp = (n1 + n2 + carry) % 10
。之后将结果添加到result
尾部 - 在
for
循环中的判断条件添加carry != 0
用于判断最高位相加是否溢出 - 如果
i
,j
已经走完头部,比如131 + 92
,那么给对应的n1
或n2
置为0
当循环完成时,我们发现result
的顺序是倒序的,这时需要reverse
之后再输出。
代码
cpp
1 | class Solution { |
如果有错误或者不严谨的地方,请务必给予指正,十分感谢。