怎么进行大数相加算法题

原创
小哥 3年前 (2022-10-21) 阅读数 68 #技术教程
文章标签 算法

主要思路

  • 将两个数字转换为字符串
  • 将两个数字向右对齐,然后从最后一个数字开始向前相加两倍。
  • 如果两位数之和不小于10然后抬(将) overflow 置为 true ,初始值为 false
  • 每轮数字相加后,切记判断入口状态,如果有入口,则当前数字之和递减。10。
  • 得到数字的总和,然后以字符串的形式向前相加。
  • 在遍历这两个数字之后,还应该确定入口状态。

    const add = function (a, b) {
        const maxLength = Math.max(a.length, b.length)
        let sum = 
        let overflow = false
        for (let i = 1; i <= maxLength; i++) {
            const ai = a[a.length - i] || 0
            const bi = b[b.length - i] || 0
            let ci = parseInt(ai) + parseInt(bi) + (overflow ? 1 : 0)
            overflow = ci >= 10
            ci = overflow ? ci - 10 : ci
            sum = ci + sum
        }
        sum = overflow ? 1 + sum : sum
        return sum
    }
    
    console.log(add("11111111101234567","77777777707654321"))
    console.log(add("911111111101234567","77777777707654321"))
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门