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