Кодирование: преобразование римских цифр в целые числа в JavaScript — LeetCode (13)

Feb 01 2023
В этой статье мы обсудим фрагмент кода, предназначенный для преобразования римских значений в целые числа. Код представляет собой функцию JavaScript с именем «romanToInt», которая принимает строковый аргумент «s», представляющий римскую цифру.

В этой статье мы обсудим фрагмент кода, предназначенный для преобразования римских значений в целые числа.

Код представляет собой функцию JavaScript с именем «romanToInt», которая принимает строковый аргумент «s», представляющий римскую цифру. Функция преобразует римскую цифру в целое число и возвращает результат.

Функция начинается с определения объекта «карта», который сопоставляет каждый символ римской цифры с соответствующим целочисленным значением. Например, «I» соответствует 1, «V» соответствует 5 и так далее.

Затем функция объявляет переменную «результат» и инициализирует ее значением 0. Эта переменная будет использоваться для хранения окончательного целочисленного результата.

Затем функция использует цикл for для перебора каждого символа во входной строке «s». Для каждого символа функция ищет соответствующее целочисленное значение в объекте «карта».

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

Наконец, функция возвращает окончательное «результатное» значение, которое представляет целочисленный эквивалент введенной римской цифры.

Например, если мы вызовем «romanToInt («XXI»)», функция вернет 21.

Вот фрагмент кода, в котором пошагово объясняется функция «romanToInt»:

function romanToInt(s) {
  const map = {
    I: 1,
    V: 5,
    X: 10,
    L: 50,
    C: 100,
    D: 500,
    M: 1000
  };
  let result = 0;
  for (let i = 0; i < s.length; i++) {
    let value = map[s[i]]; // Look up the integer value of the current character
    console.log(`${s[i]} maps to ${value}`);
    if (i + 1 < s.length) {
      let nextValue = map[s[i + 1]];
      console.log(`Next character ${s[i+1]} maps to ${nextValue}`);
      if (nextValue > value) {
        value = nextValue - value; // Calculate the combined value of two symbols
        console.log(`Combined value of ${s[i]} and ${s[i+1]} is ${value}`);
        i++;
      }
    }
    result += value; // Add the current value to the final result
    console.log(`Result so far: ${result}`);
  }
  return result;
}

Например, если мы вызовем «romanToInt («XXI»)», вывод консоли будет выглядеть так:

Если вы хотите узнать больше о программировании на Javascript, обязательно подпишитесь на меня, чтобы получить дополнительные фрагменты кода и примеры. Я буду делиться ценной информацией и советами о том, как освоить язык и улучшить свои навыки разработчика. Итак, следите за обновлениями, и давайте продолжим учиться вместе.

Спасибо за чтение. Приятного обучения

Поддержите нашу публикацию, подписавшись на нее

Java 8 — предикат, потребитель и поставщик Почему стартапы должны выбирать React Native, а не гибридные приложения? Сериализация и десериализация в Java [Внутреннее устройство Java, часть 6] [Вторая часть] Часть 2: Основные (6–9) общие вопросы по JavaScript Интеграция Splunk с SpringBoot — заключительная часть