怎么进行大数相加算法题
原创主要思路
- 将两个数字转换为字符串
- 将两个数字向右对齐,然后从最后一个数字开始向前相加两倍。
- 如果两位数之和不小于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"))
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
上一篇:怎么从无重复字符的最长子串-算法题 下一篇:es6之扩展运算符三个点(...)