Appearance
实现大数相加
js
const addStrings = (a, b) => {
let res = '';
let i = a.length - 1;
let j = b.length - 1;
let flag = 0
while(i >= 0 || j >= 0) {
let sum = 0;
if (i >= 0) sum += parseInt(a[i--])
if (j >= 0) sum += parseInt(b[j--])
// 加上上次的进位
sum += flag;
// 更新进位
flag = Math.floor(sum / 10)
// 计算值
res = sum % 10 + res;
}
// 说明第一位相加 还是有进位
if (flag > 0) {
res = flag + res;
}
return res;
}
console.log(addStrings('1234', '2345')); // 输出 '3589'
console.log(addStrings('987654321098765432109876543210', '123456789012345678901234567890')); // 输出 '1111111110111111110111111111000'
console.log(addStrings('999999', '1')); // 输出 '1000000'
console.log(addStrings('0', '0')); // 输出 '0'
const addStrings = (a, b) => {
let res = '';
let i = a.length - 1;
let j = b.length - 1;
let flag = 0
while(i >= 0 || j >= 0) {
let sum = 0;
if (i >= 0) sum += parseInt(a[i--])
if (j >= 0) sum += parseInt(b[j--])
// 加上上次的进位
sum += flag;
// 更新进位
flag = Math.floor(sum / 10)
// 计算值
res = sum % 10 + res;
}
// 说明第一位相加 还是有进位
if (flag > 0) {
res = flag + res;
}
return res;
}
console.log(addStrings('1234', '2345')); // 输出 '3589'
console.log(addStrings('987654321098765432109876543210', '123456789012345678901234567890')); // 输出 '1111111110111111110111111111000'
console.log(addStrings('999999', '1')); // 输出 '1000000'
console.log(addStrings('0', '0')); // 输出 '0'