美文网首页
LeetCode [Medium] 字符串相乘 Javascri

LeetCode [Medium] 字符串相乘 Javascri

作者: Sommouns | 来源:发表于2019-10-15 23:19 被阅读0次

    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

    示例 :
    输入: num1 = "123", num2 = "456"
    输出: "56088"

    /**
    * @param {string} num1
    * @param {string} num2
    * @return {string}
    */
    var multiply = function(num1, num2) {
       
     // 边缘情况
     if (!num1 || !num2 || num1 === '0' || num2 === '0') return '0'
       
     // 字符串转数组
     num1 = num1.split('').reverse()
     num2 = num2.split('').reverse()
     
     // 存储个位数字
     var temp = []
     function tempPush(index, val) {
         temp[index] = temp[index] || 0
         var value = +temp[index] + val
         var int = Math.floor(value/10)
         temp[index] = value % 10
         if (int) tempPush(index + 1, 1)
     }
     
     // 竖式计算
     var total = 0
     for (let i = 0; i < num1.length; i += 1) {
          for (let j = 0; j < num2.length; j += 1) {
             var basePosition = i + j
             var mulRes = num1[i] * num2[j]
             var pro = Math.floor(mulRes/10)
             var val = mulRes % 10
             tempPush(basePosition, val)
             if (pro) tempPush(basePosition + 1, pro)
         }
     }
     return temp.reverse().join('')
    };
    

    相关文章

      网友评论

          本文标题:LeetCode [Medium] 字符串相乘 Javascri

          本文链接:https://www.haomeiwen.com/subject/qwbemctx.html