###### 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= ```