美文网首页
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