- 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;
}
}