LeetCode:43. 字符串相乘
方法一
js
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var multiply = function (num1, num2) {
if (num1 === '0' || num2 === '0') return '0';
const len1 = num1.length;
const len2 = num2.length;
const res = new Array(len1 + len2).fill(0);
// 从个位开始计算
for (let i = len1 - 1; i >= 0; i--) {
// 第二个数也从个位开始计算
for (let j = len2 - 1; j >= 0; j--) {
// res[i+j+1] 上次计算的进位值
const temp = num1[i] * num2[j] + res[i + j + 1];
// 个位值
res[i + j + 1] = temp % 10;
// 进位数,也加上之前的值
res[i + j] += Math.floor(temp / 10);
}
}
// 清除首位 0
res[0] === 0 && res.splice(0, 1);
return res.join('');
};
方法二
js
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var multiply = function (num1, num2) {
return (BigInt(num1) * BigInt(num2)).toString();
};