1. 题目描述
给定两个字符串形式的非负整数 num1
和num2
,计算它们的和。
提示:
-
num1
和num2
的长度都小于 5100 -
num1
和num2
都只包含数字0-9
-
num1
和num2
都不包含任何前导零 - 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
2. 解题思路
这里我们模拟竖式加法,遍历两个字符串,从个位开始将两个数相加。定义一个temp来保存两个数的和。将temp与10取余,得到的值加在结果res中,如果有进位,就将temp赋值为1,方便前面的位相加。最后判断相加完之后,temp是否等于1,如果是就进一位,在结果前面加一个1。
复杂度分析:
- 时间复杂度: O(max(len1, len2)),其中len1和len2分别是num1和num2的长度,竖式加法的次数取决于较大数的位数。
- 空间复杂度: O(1),除答案外只需要常数空间存放若干变量。
3. 代码实现
4. 提交结果