This solution is generated by ChatGPT, correctness is not guaranteed. You might also be able to find a solution fromcommunity posts.
AI solution for JavaScript Coding Question on BFE.dev
128. BigDecimal multiplication
Solution using the Grade-school algorithm:
function multiply(a, b) { const sign = (a[0] === '-' ? b[0] === '-' ? '' : '-' : b[0] === '-' ? '-' : ''); a = a.replace(/^-/, ''); b = b.replace(/^-/, ''); const res = new Array(a.length + b.length).fill(0); for (let i = a.length - 1; i >= 0; i--) { const x = +a[i]; let carry = 0; for (let j = b.length - 1; j >= 0; j--) { const y = +b[j]; const z = x * y + res[i+j+1] + carry; res[i+j+1] = z % 10; carry = Math.floor(z / 10); } res[i] += carry; } let i = 0; while (i < res.length && res[i] === 0) i++; let str = res.slice(i).join(''); return sign + (str === '' ? '0' : str);}
This function will first remove the sign from both inputs, then create a result array with the length of the sum of input lengths. Then it follows the algorithm of multiplication in which it multipies digits of a with digits of b from right to left and adds results to the result array.
Finally, it removes leading zeroes, adds the sign and returns the answer.
Time Complexity: O(n*m)
Space complexity: O(n + m)