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 beforeV
(5) andX
(10) to make 4 and 9.- can be placed before
L
(50) andC
(100) to make 40 and 90. C
can be placed beforeD
(500) andM
(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