Multiply Strings
Problem statement
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.
Note: You must not use any built-in BigInteger library or convert the inputs to integer directly.
Example 1:
Input: num1 = "2", num2 = "3"Output: "6"
Example 2:
Input: num1 = "123", num2 = "456"Output: "56088"
Constraints:
1 <= num1.length, num2.length <= 200num1andnum2consist of digits only.- Both
num1andnum2do not contain any leading zero, except the number0itself.
My solution
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var multiply = function(num1, num2) {
if (num1 == "0" || num2 === "1") {
return num1;
}
if (num2 === "0" || num1 === "0") {
return num2;
}
let carry = 0;
let sum = 0;
let results = Array.from({
length: num1.length + num2.length
}, () => 0)
let i;
let j
for (i = num1.length - 1; i >= 0; i--) {
carry = 0;
for (j = num2.length - 1; j >= 0; j--) {
sum = num2[j] * num1[i] + carry + results[i + j + 1];
// console.log(`${i}:${j} => ${sum}`)
carry = Math.floor(sum / 10);
results[i + j + 1] = sum % 10;
}
// console.log(`${i}:${j}`)
results[i + j + 1] = carry;
}
console.log(results)
if (results[0] === 0) {
results.shift();
}
return results.join("")
};