Roman to Integer - LeetCode

----- Условие ----- Требуется перевести строку, состоящую из римских цифр, в число. Для римских цифр (в рамках данной задачи) вычитание используется в шести случаях: I можно поставить перед V (5) и X (10), чтобы получить 4 и 9. X можно поставить перед L (50) и C (100), чтобы получить 40 и 90. C можно поставить перед D (500) и M (1000), чтобы получить 400 и 900.

----- Решение ----- Для решения необходимо пройтись в цикле по всем элементам строки: если следующий элемент больше текущего, то текущий надо вычесть из общей суммы, иначе добавить. Сложность алгоритма по памяти O(1), сложность по времени O(n), где n - длина строки.

----- Код ----- /**  * @param {string} s  * @return {number}  */ const romanToInt = function(s) {   const dict = {     ‘I’: 1,     ‘V’: 5,     ‘X’: 10,     ‘L’: 50,     ‘C’: 100,     ‘D’: 500,     ‘M’: 1000,   };

let sum = 0;

for (let i = 0; i < s.length; i++) {     const currentNumber = dict[s[i]];       if (i < s.length - 1 && currentNumber < dict[s[i + 1]]) {       sum -= currentNumber;     } else {       sum += currentNumber;     }   }

return sum; };