image.png

思路

通过例子演示可得出 num1[i]num2[j] 的乘积对应的就是 res[i+j]res[i+j+1] 这两个位置。
image.png

题解

  1. function multiply(num1: string, num2: string): string {
  2. let m = num1.length;
  3. let n = num2.length;
  4. // 最大可能长度会是m + n
  5. let resArr = new Array(m + n).fill(0);
  6. for (let i = m - 1; i >= 0; i--) {
  7. for (let j = n - 1; j >= 0; j--) {
  8. let mul = Number(num1[i]) * Number(num2[j]);
  9. let p1 = i + j;
  10. let p2 = i + j + 1;
  11. let sum = resArr[p2] + mul;
  12. resArr[p2] = sum % 10;
  13. resArr[p1] += Math.floor(sum / 10);
  14. }
  15. }
  16. let i = 0;
  17. while (i < resArr.length && resArr[i] === 0) {
  18. i++;
  19. }
  20. console.log(resArr);
  21. let resStr = '';
  22. for (; i < resArr.length; i++) {
  23. resStr += resArr[i];
  24. }
  25. return resStr === '' ? '0' : resStr;
  26. };