Fraction Addition and Subtraction LeetCode solution in JavaScript

1
var fractionAddition = function (expression) {
2
const fractions = expression.split(/[+-]/).filter(Boolean);
3
const operator = expression.split(/[0-9/]/).filter(Boolean);
4
expression[0] !== "-" && operator.unshift("+");
5

6
const gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));
7
const lcm = fractions.reduce((result, fraction) => {
8
const denominator = fraction.split("/")[1];
9
return (result * denominator) / gcd(result, denominator);
10
}, 1);
11

12
const molecularSum = fractions.reduce((total, fraction, index) => {
13
const [molecular, denominator] = fraction.split("/");
14
const multiple = (lcm / denominator) * (operator[index] === "+" ? 1 : -1);
15
return total + molecular * multiple;
16
}, 0);
17

18
const resultGcd = gcd(Math.abs(molecularSum), lcm);
19
return `${molecularSum / resultGcd}/${lcm / resultGcd}`;
20
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0