Python/Problems
< Python
Roman Numeral to Integer
My favorite solution I found online: [1]
class Solution:
def romanToInt(self, s: str) -> int:
translations = {
"I": 1,
"V": 5,
"X": 10,
"L": 50,
"C": 100,
"D": 500,
"M": 1000
}
number = 0
s = s.replace("IV", "IIII").replace("IX", "VIIII")
s = s.replace("XL", "XXXX").replace("XC", "LXXXX")
s = s.replace("CD", "CCCC").replace("CM", "DCCCC")
for char in s:
number += translations[char]
return number
My Solution: [2]
class Solution:
def romanToInt(self, s: str) -> int:
i = 0
t = 0
slen = len(s)
roman = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
rdic = {"IV": 4, "IX": 9, "XL": 40, "XC": 90, "CD": 400, "CM": 900}
while i < slen:
c = s[i]
if i + 1 < slen and c in ("I", "X", "C"):
cc = c + s[i+1]
if cc in rdic:
t += rdic[cc]
i += 2
continue
t += roman[c]
i += 1
print(t)
return t