给定两个以字符串形式表示的非负整数 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('')
};
网友评论