算法:两个长数字相加

87 阅读1分钟
/**
* 长数字相加
* @param {string} a - 第一个长数字字符串
* @param {string} b - 第二个长数字字符串
* @returns {string} - 相加后的长数字字符串
*/
function sum(a, b) {
    // 获取两个数字字符串中较长的长度
    let len = Math.max(a.length, b.length);
    // 在较短的数字字符串前面补0,使其长度与较长的数字字符串相同
    a = a.padStart(len, "0");
    b = b.padStart(len, "0");
    // 进位标志
    let carry = 0;
    // 结果字符串
    let result = '';
    // 从右向左遍历数字字符串
    for (let i = len - 1; i >= 0; i--) {
        // 将当前位的数字相加,并加上进位
        const sum = +a[i] + +b[i] + carry;
        // 计算进位
        carry = Math.floor(sum / 10);
        // 将当前位的结果添加到结果字符串的前面
        result = (sum % 10) + result;
    }
    // 如果最后还有进位,将进位添加到结果字符串的前面
    if (carry) {
        result = carry + result;
    }
    // 返回结果字符串
    return result;
}
console.log(sum("111222222","90000"));
//输出结果:111312222