Suppose we have Roman literals; we have to convert them into an integer. As we know the Roman numerals represent in some different symbols as below:

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.- 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.

Input: s = "III" Output: 3 Explanation: III = 3.

Input: s = "LVIII" Output: 58 Explanation: L = 50, V= 5, III = 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]`

.

## Solution in python3

class Solution: romman_to_number = { "I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000 } def romanToInt(self, s: str) -> int: total = 0 for i in range(len(s)): if i+1 < len(s) and self.romman_to_number[s[i]] < self.romman_to_number[s[i+1]]: total -= self.romman_to_number[s[i]] else: total += self.romman_to_number[s[i]] return total

Roman to Integer Interview question asked by Top Companies