###### tags: `Hash Table`, `Math`, `String`
# LeetCode 13.Roman to Integer
Roman numerals are represented by seven different symbols: ```I```, ```V```, ```X```, ```L```, ```C```, ```D``` and ```M```.
```
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
```
For example, ```2``` is written as ```II``` in Roman numeral, just two ones added together. ```12``` is written as ```XII```, which is simply ```X + II```. The number ```27``` is written as ```XXVII```, which is ```XX + V + II```.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not ```IIII```. Instead, the number four is written as ```IV```. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as ```IX```. There are six instances where subtraction is used:
- ```I``` can be placed before ```V``` (5) and ```X``` (10) to make 4 and 9.
- ```X```can be placed before ```L``` (50) and ```C``` (100) to make 40 and 90.
- ```C``` can be placed before ```D``` (500) and ```M``` (1000) to make 400 and 900.
Given a roman numeral, convert it to an integer.
>Example 1:
```
Input: s = "III"
Output: 3
Explanation: III = 3.
```
>Example 2:
```
Input: s = "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.
```
>Example 3:
```
Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
```
### Constraints:
- $1 <= s.length <= 15$
- s contains only the characters ('I', 'V', 'X', 'L', 'C', 'D', 'M').
- It is guaranteed that ```s``` is a valid roman numeral in the range [1, 3999].
---
### Idea:
>
### Solution:
Python:
```python=
class Solution:
def romanToInt(self, s: str) -> int:
twokey = ['IV','IX','XL','XC','CD','CM']
key={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
splits=len(s)
add=[]
total =0
for i in range(splits):
if i < splits-1:
if s[i:i+2] in twokey:
add.append(0)
else:
add.append(1)
else:
add.append(1)
for i in range(splits):
m2=key[str(s[i])]
mit=add[i]
if mit==1:
total=total+m2
elif mit==0:
total=total-m2
return total
```
C++
```cpp=
```