Решение LeetCode от римских чисел до целых чисел на JavaScript: преобразование римских цифр в целые числа

Упомянутая вами проблема «от римского к целому числу» — популярная проблема кодирования в LeetCode. Задача — преобразовать римскую цифру в целое число. Я предоставлю вам решение на JavaScript, а затем дам несколько дополнительных методов решения проблемы.

Вот одно из возможных решений с использованием сопоставления римских цифр с соответствующими целочисленными значениями:

const romanToInt = (s) => {
  const romanMap = {
    I: 1,
    V: 5,
    X: 10,
    L: 50,
    C: 100,
    D: 500,
    M: 1000,
  };
  let result = 0;
  let prevValue = 0;
  for (let i = s.length - 1; i >= 0; i--) {
    const current = romanMap[s[i]];
    if (current >= prevValue) {
      result += current;
    } else {
      result -= current;
    }
    prevValue = current;
  }
  return result;
};
// Example usage
console.log(romanToInt("III")); // Output: 3
console.log(romanToInt("IV")); // Output: 4
console.log(romanToInt("IX")); // Output: 9
console.log(romanToInt("LVIII")); // Output: 58
console.log(romanToInt("MCMXCIV")); // Output: 1994

Это решение перебирает входную строку римских цифр справа налево, накапливая целочисленное значение на основе сопоставления. Если меньшая цифра стоит перед большей (например, «IV» вместо 4), она вычитает значение, а не добавляет его.

Дополнительные методы решения этой проблемы включают использование регулярных выражений или создание более полного сопоставления с дополнительными правилами для случаев вычитания, таких как «IV» и «IX».