沒實現代碼,只大體說了下思路,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位數)放入數組的一個元素中
實現還未完成,有時間再看看。數組