números romanos LeetCode_ a entero

  1. números romanos 822 a la dificultad número entero simplemente contiene los siguientes siete caracteres números romanos: I, V, X, L, C, D y M.

carácter numérico
del I. 1
V. 5
X-10
L 50
C 100
D 500
M 1000

Por ejemplo, escrito como un número romano II 2 deberán ser escritos como dos paralelas 1,12 XII, que es X + II. 27 escribirse como XXVII, a saber XX + V + II.

Por lo general, una pequeña cantidad de números romanos a la derecha en grandes cantidades. Pero hay excepciones, por ejemplo, no escriba 4 IIII, pero IV. En el lado izquierdo número 5 número 1, el número de un gran número igual al valor representado por un número reducido 5 obtenido 4. Asimismo, el número 9 se representa como IX. Esta regla se aplica sólo a los seis casos siguientes:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

Dado un número romano, para convertirlo en un entero. Para asegurarse de que la entrada está en el intervalo de 1 a 3.999 mil.

Ejemplo 1:

Entrada: "III"
de salida: 3

Ejemplo 2:

Entrada: "IV"
de salida: 4

Ejemplo 3:

Intro: "IX"
Salida: 9

Ejemplo 4:

Entrada: "LVIII"
de salida: 58
explica: L = 50, V = 5 , III = 3.

Ejemplo 5:

Entrada: "MCMXCIV"
de salida: 1994
explicación: M = 1000, CM = 900 , XC = 90, IV = 4.
presentado por 265,205 veces 161,549 veces


Ley de violencia diccionario

Inconveniente para hacer frente a la tabla hash, el diccionario es muy bueno

public class Solution 
{
    public int RomanToInt(string s) 
    {
        Dictionary<string,int> dc = new Dictionary<string,int>();
        dc.Add("I",1);
        dc.Add("IV",4);
        dc.Add("IX",9);
        dc.Add("V",5);
        dc.Add("X",10);
        dc.Add("XL",40);
        dc.Add("XC",90);
        dc.Add("L",50);
        dc.Add("C", 100);
        dc.Add("CD", 400);
        dc.Add("CM", 900);
        dc.Add("D", 500);
        dc.Add("M", 1000);
        var sum = 0;
        for(var i = 0;i < s.Length;)
        {
            if(i + 2 <= s.Length && dc.ContainsKey(s.Substring(i,2)))
             {
                 sum += dc[s.Substring(i,2)];
                 i += 2;
             } else {
                 sum += dc[s.Substring(i,1)];
                 i ++;
             }
        }
        return sum;
    }
}

Aquí Insertar imagen Descripción

Publicado 38 artículos originales · ganado elogios 1 · visitas 783

Supongo que te gusta

Origin blog.csdn.net/weixin_45774706/article/details/104834381
Recomendado
Clasificación