415. 字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

 

提示:

  1. num1 和num2 的长度都小于 5100
  2. num1 和num2 都只包含数字 0-9
  3. num1 和num2 都不包含任何前导零
  4. 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式

思考

不能直接转换成数字相加,就只能一位一位字符取出来。像竖式那样相加


代码实现

/**
 * @param {string} num1
 * @param {string} num2
 * @return {string}
 */
 var addStrings = function(num1, num2) {
    // 指向最后一个字符
    let i = num1.length-1
    let j = num2.length-1
    let add = 0

    // 存放相加结果,第一个是个位
    const ans = []

    while(i>=0 || j>=0 || add!=0) {
        // 如果序号大于等于0,就利用减号做隐式转换,将字符转换为数字。否则就说明走完了,进行补0
        let x = i >= 0 ? num1.charAt(i) - '0' : 0;
        let y = j >= 0 ? num2.charAt(j) - '0' : 0;
        let result = x + y + add
        ans.push(result % 10)
        // js的除法不是地板处,会有小数的
        add = Math.floor( result / 10)
        i -= 1
        j -= 1
    }

    return ans.reverse().join("")
};

知识点

1.获取第i个索引的字符

str.charAt(i)

2.js的减法可以强制隐式转换,变成数字

3.js的除法不是地板除,获取10位数需要人工处理一下 

 

上一篇:【LeetCode-415】字符串相加


下一篇:Java Spring Webflux上传文件MultipartFile问题(415 UnsupportedMediaTypeStatusException)