以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 代码题
114. 大整数乘法(BigInt)
思路:
-
将两个大整数从右往左逐一取出,将每一位数相乘得到一个新数,并将此数存入一个结果数组中,结果数组中的每一位存储的都是各位数相乘的结果;
-
再从结果数组的第0位开始于进位变量(初始化为0)相加,将相加结果除以10得到进位数和余数,将余数存入该位,将进位数存入下一位;
-
去除结果数组中前导的0;
-
将结果数组中的每一位转换为字符并合并起来,得到最终结果。
代码实现:
function multiply(a, b) {
let res = [];
let lenA = a.length;
let lenB = b.length;
// 将 a 与 b 的每一位相乘
for (let i = lenA - 1; i >= 0; i--) {
for (let j = lenB - 1; j >= 0; j--) {
let mul = Number(a[i]) * Number(b[j]);
let index1 = i + j;
let index2 = i + j + 1;
let sum = mul + (res[index2] || 0);
// 更新结果数组
res[index1] = (res[index1] || 0) + Math.floor(sum / 10);
res[index2] = sum % 10;
}
}
// 去除结果数组的前导 0
while (res[0] === 0 && res.length > 1) {
res.shift();
}
// 将结果数组中的每一位转换为字符并合并起来
return res.join('');
}