JavaScript 字符串:字符串相加

在这里插入图片描述
思路:
因为本题不能使用任何 BigInteger库,所以我们可以使用双指针来模拟人工计算,步骤如下:

(1)创建指针 i 指向 nums1末位数字,j 指向 nums2末位数字。
(2)i, j 数字相加,用进位就用 carry 来记录进位值,无则为 0。
(3)若产生进位,则当前数字为 (i+j)%10 的值。
(4)若遍历过程中,nums1 或 nums2 当前已无数字,则用 0 补位来计算。

在这里插入图片描述

functon addStrings(num1, num2) {
    let i = num1.length - 1,//两个指针分别指向两个数的尾部
        j = num2.length - 1,
        carry = 0,//进位
        ans = [];
    while(i >= 0 || j >= 0 || carry !== 0){//判断指针是否到头
        let c1 = i >= 0 ? num1.charAt(i) - '0' : 0,//没到头就转换成数字,到头就赋值为0
            c2 = j >= 0 ? num2.charAt(j) - '0' : 0;
        let sum = c1 + c2 + carry;
        ans.unshift(sum % 10);//取余数,从队头放入res
        carry = Math.floor(sum / 10);//重新设置进位
        i--;
        j--;
    }
    return ans.join('');//将数组连接成字符串
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值