题目描述:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
- num1 和num2 的长度都小于 5100.
- num1 和num2 都只包含数字 0-9.
- num1 和num2 都不包含任何前导零。
- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串 转换为整数形式。
例:
输入 :“37459670” “4567087”
输出 : “42026757”
解题思路
题目意思就是说拿两个数字字符串,计算他们转为为数字相加的和,最后的结果也要是个字符串,但是不允许你直接把这两个数字字符串转化为数字直接相关,如果那么简单就完事了就莫得意思了啊。
我的想法是低位开始相加,从 num1 ,num2 的尾部开始计算,模拟人工加法。利用把两个字符串分割,用两个栈ar_num1
,ar_num2
分别存起来,栈顶为最低位元素,用一个变量result
来存储最终返回的结果,这是个字符串,一开始为空串,用每次计算都取栈顶元素相加,用tmp
保存单次相加的结果,两栈顶元素加完后,再加上进位数add(为0或者1)