题目:
源于力扣 415 字符串相加
题目浅显易懂,只需要模拟两个数字相加就好了
解题思路:
我们可以通过列竖式的方式,从后往前遍历,两两相加,在每一位相加过程中处理进位
代码编写:
注意点一:由于我们是从后往前遍历,所以我们可以先通过reverse函数将字符串倒置再进行
注意点二:我们的在遍历完两个字符串后要检查进位是否有遗漏 如99+1这种情况,如果只考虑遍历完字符串就结束会使结果错误为00,缺少进位1
注意点三:字符串提取出来后是char类型,注意减去 '0' 在加到进位中
步骤:
先定义两个遍历字符串的下标,翻转原字符串,定义一个用于返回的字符串 ret ,定义一个用于加各个位数值的 sum,一个要添加到 ret 后面的暂时个位 tmp,通过while循环(循环条件为 有任意一个字符串没有遍历完 或者 还有进位未处理则继续)开始遍历两个字符串的个位到最高位,在循环内,若此字符串未走到最高位,则将该位置的对应数值加入 sum 并将下标++,tmp 通过%运算将sum中的个位提取出来,再+=到 ret 字符串后面,同时sum除等10,保留进位并开启下一位的运算(sum每次循环不需要置0,用于保留进位)
最后由于我们遍历是从个位开始的,所以最后的ret其实是从个位到最高位(从右向左)的顺序,我们需要将ret翻转,得到最后结果。
代码:
如果您有文章内的任何内容问题或错误,欢迎指出并改进