Multiply Strings LeetCode solution in JavaScript

1
var multiply = function (num1, num2) {
2
const m = num1.length;
3
const n = num2.length;
4

5
const steps = [];
6
let carry = 0;
7
for (let i = m - 1; i >= 0; i -= 1) {
8
const digitOne = parseInt(num1[i]);
9
let step = "0".repeat(m - 1 - i);
10

11
carry = 0;
12
for (let j = n - 1; j >= 0; j -= 1) {
13
const digitTwo = parseInt(num2[j]);
14

15
const product = digitOne * digitTwo + carry;
16
const newDigit = product % 10;
17
carry = Math.floor(product / 10);
18

19
step = newDigit + step;
20
}
21

22
if (carry > 0) step = carry + step;
23
steps.push(step);
24
}
25

26
for (let i = 0; i < steps.length - 1; i += 1) {
27
let nextStep = steps[i + 1];
28
let step = steps[i];
29
step = "0".repeat(nextStep.length - step.length) + step;
30

31
carry = 0;
32
let newStep = "";
33
for (let j = step.length - 1; j >= 0; j -= 1) {
34
const sum = parseInt(nextStep[j]) + parseInt(step[j]) + carry;
35
const digit = sum % 10;
36
carry = Math.floor(sum / 10);
37
newStep = digit + newStep;
38
}
39

40
if (carry > 0) newStep = carry + newStep;
41
steps[i + 1] = newStep;
42
}
43

44
let result = steps[steps.length - 1];
45
let leadingZeros = 0;
46
while (leadingZeros < result.length - 1 && result[leadingZeros] === "0") {
47
leadingZeros += 1;
48
}
49

50
return result.slice(leadingZeros);
51
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0