字符串相加(大数相加)
题目
大数相加, 懂得人自然懂.
题解
- 先取两个字符串中最大的长度
- 短的那个前面补 0 以保证两者对齐
- 写个 for 循环, 从后往前逐位加和, 注意如果加和 >= 10, 说明要进位, 记 carry 为 1
- 最后循环完了, 如果发现 carry 还是 1, 说明最后一次加和仍然要进位, 那就在最前面补个 1 即可
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var addStrings = function (num1, num2) {
const len = Math.max(num1.length, num2.length)
num1 = num1.padStart(len, 0)
num2 = num2.padStart(len, 0)
let carry = 0
let res = ''
for (let i = len - 1; i >= 0; i--) {
const sum = +num1[i] + +num2[i] + carry
carry = (sum / 10) | 0
res = (sum % 10) + res
}
return carry === 0 ? res : `1${res}`
}