LeetCode 415. 字符串相加

题目链接:https://leetcode-cn.com/problems/add-strings/
description:

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

实现思路:

将两个字符串用0补齐使长度相等,然后再逆转,通过设置一个pre变量来进行进位控制。

JavaScript代码实现:
var addStrings = function(num1, num2) {
    let arr1 = num1.split('')
    let arr2 = num2.split('')
    let arr1_num = arr1.map(v => {
        return parseInt(v)
    })
    let arr2_num = arr2.map(v => {
        return parseInt(v)
    })
    arr1_num.reverse()
    arr2_num.reverse()
    let len_arr1_num = arr1_num.length;
    let len_arr2_num = arr2_num.length;
    let dis = len_arr1_num > len_arr2_num ? len_arr1_num - len_arr2_num : len_arr2_num - len_arr1_num
    for (let i = 0; i < dis; i++) {
        if (len_arr1_num > len_arr2_num) {
            arr2_num.push(0)
        } else {
            arr1_num.push(0)
        }
    }
    // console.log(arr1_num, arr2_num)
    let i = 0;
    let pre = 0
    let rs = []
    while (i < arr1_num.length) {
        let t = arr1_num[i] + arr2_num[i] + pre
        if (t >= 10) {
            rs.push(t - 10)
            pre = 1
        } else {
            rs.push(t)
            pre = 0
        }
        i++
    }
    rs.reverse()
    // console.log(rs)
    if (pre === 1) {
        rs.unshift(1)
    }
    let result = ''
    rs.forEach(v => {
        result+=v
    })
    return result
};
let rs = addStrings("9", "99")
console.log(rs)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

. . . . .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值