Leetcode.Roman-to-integer

Task

public class Solution {
    public int RomanToInt(string s) {
        var numbers = new Dictionary<char, int>();
        numbers.Add('I', 1);
        numbers.Add('V', 5);
        numbers.Add('X', 10);
        numbers.Add('L', 50);
        numbers.Add('C', 100);
        numbers.Add('D', 500);
        numbers.Add('M', 1000);        
        
        var numbersDiminished = new Dictionary<String, int>();
        numbersDiminished.Add("IV", 4);
        numbersDiminished.Add("IX", 9);
        numbersDiminished.Add("XL", 40);
        numbersDiminished.Add("XC", 90);
        numbersDiminished.Add("CD", 400);
        numbersDiminished.Add("CM", 900);

        int result = 0;
        int number = 0;

        for (int i = 0; i < s.Length; i++) {
            
            number = numbers[s[i]];
            

            if ((s[i] == 'I' || s[i] == 'X' || s[i] == 'C') && i != s.Length - 1 )   {
                  string maybeDiminished = s.Substring(i, 2);                  
                  
                  if (numbersDiminished.ContainsKey(maybeDiminished)) {
                      number = numbersDiminished[maybeDiminished];                 
                      i++;   
                  }
            }  
                        
            result += number;
        }

        return result;
    }
}
This entry was posted in Без рубрики. Bookmark the permalink.