转圈圈

大数乘法

/**
 *
 * 大数乘法 模拟乘法
 *
 * @param {string} num1 整数字符串
 * @param {string} num2 整数字符串
 * @return {string} 整数字符串
 */
function multiplication(num1, num2) {
  const result = Array.from({ length: num1.length + num2.length }, () => 0);

  const len1 = num1.length;
  const len2 = num2.length;

  for (let i = len1 - 1; i >= 0; i -= 1) {
    let carry = 0;

    for (let j = len2 - 1; j >= 0; j -= 1) {
      result[i + j + 1] += carry + num1[i] * num2[j];

      carry = Math.floor(result[i + j + 1] / 10);

      result[i + j + 1] = result[i + j + 1] % 10;
    }
    result[i] += carry;
  }
  return result.join('').replace(/^0+(\d)/, '$1');
}

posted @ 2019-05-27 21:51  rosendolu  阅读(385)  评论(0编辑  收藏  举报