以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
114. 大整数乘法(BigInt)

思路:

  1. 将两个大整数从右往左逐一取出,将每一位数相乘得到一个新数,并将此数存入一个结果数组中,结果数组中的每一位存储的都是各位数相乘的结果;

  2. 再从结果数组的第0位开始于进位变量(初始化为0)相加,将相加结果除以10得到进位数和余数,将余数存入该位,将进位数存入下一位;

  3. 去除结果数组中前导的0;

  4. 将结果数组中的每一位转换为字符并合并起来,得到最终结果。

代码实现:

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('');
}