没实现代码,只大体说了下思路,Number.MAX_SAFE_INTEGER
最大值是16位,那么将字符串以15位分割,再分别相加,有进位的话就进位,最后再将相加后的字符串拼接。
今天翻到学习算法时记的笔记发现学过,可是忘了,仍是学得不够深刻。
代码以下:算法
function add (a, b) { var length = a.length > b.length ? (a.length + 1) : (b.length + 1) var arrA = [] var arrB = [] var arrR = [] for (var i = 0; i < length; i++) { arrA[i] = a[a.length - 1 - i] == undefined ? 0 : a[a.length - 1 - i] arrB[i] = b[b.length - 1 - i] == undefined ? 0 : b[b.length - 1 - i] arrR[i] = 0 } console.log(arrA) for (var i = 0; i < length; i++) { var sum = Number(arrA[i]) + Number(arrB[i]) + arrR[i] if (sum > 9) { arrR[i] = sum - 10 arrR[i + 1] = 1 } else { arrR[i] = sum } } console.log(arrR) return parseInt(arrR.reverse().join('')) } console.log(add('426709752318', '95481253129'))
优化思路:每15位数(Number.MAX_SAFE_INTEGER是一个16位数)放入数组的一个元素中
实现还未完成,有时间再看看。数组