Os algarismos romanos são representados por sete símbolos diferentes : I, V, X, L, C, D e M.
![](https://bcbrito.com.br/wp-content/uploads/2023/02/image.png)
Por exemplo, 2
é escrito como II
em algarismo romano, apenas dois somados. 12
é escrito como XII
, que é simplesmente X + II
. O número 27
é escrito como XXVII
, que é XX
+ V + II
.
Os algarismos romanos geralmente são escritos do maior para o menor, da esquerda para a direita. No entanto, o numeral para quatro não é IIII
. Em vez disso, o número quatro é escrito como IV
. Como o um vem antes do cinco, nós o subtraímos, resultando em quatro. O mesmo princípio se aplica ao número nove, que é escrito como IX
. Existem seis instâncias em que a subtração é usada:
I
pode ser colocado antes deV
(5) eX
(10) para fazer 4 e 9.X
pode ser colocado antes deL
(50) eC
(100) para fazer 40 e 90.C
pode ser colocado antes deD
(500) eM
(1000) para fazer 400 e 900.
Dado um numeral romano, converta-o para um número inteiro.
Exemplo 1:
![](https://bcbrito.com.br/wp-content/uploads/2023/02/image-1.png)
![](https://bcbrito.com.br/wp-content/uploads/2023/02/image-2.png)
Exemplo 3:
![](https://bcbrito.com.br/wp-content/uploads/2023/02/image-3.png)
Restrições:
![](https://bcbrito.com.br/wp-content/uploads/2023/02/image-4.png)
Você pode criar uma função que converte algarismos romanos em números inteiros usando o seguinte código em C#:
public class Solution {
public int RomanToInt(string s) {
Dictionary<char, int> map = new Dictionary<char, int>();
map.Add('I',1);
map.Add('V', 5);
map.Add('X', 10);
map.Add('L', 50);
map.Add('C', 100);
map.Add('D', 500);
map.Add('M', 1000);
char[] chars= s.ToCharArray();
int result = 0;
int temp = 0;
for (int i = 0; i < chars.Length; i++)
{
int j = i - 1;
if (i == 0)
{
temp= map[chars[i]];
result += temp;
continue;
}
else if (map[chars[j]] < map[chars[i]])
{
result-= temp;
result += map[chars[i]] - map[chars[j]];
temp = 0;
}
else
{
temp=map[chars[i]];
result += temp;
}
}
return result;
}
}