算法 -- 高精度加法(C++)力扣.415

题目:

源于力扣 415 字符串相加

题目浅显易懂,只需要模拟两个数字相加就好了

解题思路:

我们可以通过列竖式的方式,从后往前遍历,两两相加,在每一位相加过程中处理进位

代码编写:

注意点一:由于我们是从后往前遍历,所以我们可以先通过reverse函数将字符串倒置再进行

注意点二:我们的在遍历完两个字符串后要检查进位是否有遗漏 如99+1这种情况,如果只考虑遍历完字符串就结束会使结果错误为00,缺少进位1

注意点三:字符串提取出来后是char类型,注意减去 '0' 在加到进位中

步骤:

先定义两个遍历字符串的下标,翻转原字符串,定义一个用于返回的字符串 ret ,定义一个用于加各个位数值的 sum,一个要添加到 ret 后面的暂时个位 tmp,通过while循环(循环条件为 有任意一个字符串没有遍历完 或者 还有进位未处理则继续)开始遍历两个字符串的个位到最高位,在循环内,若此字符串未走到最高位,则将该位置的对应数值加入 sum 并将下标++,tmp 通过%运算将sum中的个位提取出来,再+=到 ret 字符串后面,同时sum除等10,保留进位并开启下一位的运算(sum每次循环不需要置0,用于保留进位)

最后由于我们遍历是从个位开始的,所以最后的ret其实是从个位到最高位(从右向左)的顺序,我们需要将ret翻转,得到最后结果。

代码:

如果您有文章内的任何内容问题或错误,欢迎指出并改进

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值