Как преобразовать римские цифры в целые числа в С#?

Чтобы преобразовать римские цифры в целые числа, одним из подходов может быть:

  1. Создайте словарь, который сопоставляет римские цифры с соответствующими целочисленными значениями.
  2. Прокрутите строку римских цифр и для каждого символа проверьте соответствующее значение в словаре.
  3. Сохраняйте промежуточную сумму целочисленных значений при переборе строки, а также отслеживайте предыдущий символ.
  4. Если текущий символ имеет меньшее значение, чем предыдущий символ, вычтите текущее значение из суммы, в противном случае добавьте его.
  5. Возвращает окончательную сумму как целочисленное представление римской цифры.

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

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

Вы также можете использовать несколько библиотек, доступных на C#, для выполнения этого преобразования, таких как Humanizer или RomanNumeralConverter.

И специально для LeetCode:

 public static int RomanToInt(string s)
        {
            var dictionary = new Dictionary<char, int>
            {
                {'I', 1},
                {'V', 5},
                {'X', 10},
                {'L', 50},
                {'C', 100},
                {'D', 500},
                {'M', 1000},
            };
            int total = 0;
            int prevValue = 0;

            foreach (char c in s)
            {
                int curentValue = dictionary[c];
                if (curentValue > prevValue)
                {
                    total += curentValue - 2 * prevValue; 
                }
                else
                {
                    total+= curentValue;
                }
                prevValue = curentValue;
            }
            return total;
        }