Code: Alles auswählen
from collections import deque
ROMAN_TO_INT = {
'M': 1000, 'CM': 900, 'D': 500, 'CD': 400, 'C': 100, 'XC': 90,
'L': 50, 'XL': 40, 'X': 10, 'IX': 9, 'V': 5, 'IV': 4, 'I': 1
}
def get_int(romans):
result = 0
buf = deque(maxlen=2)
for char in romans:
buf.append(char)
if len(buf) == 2:
value = ROMAN_TO_INT.get(buf[0] + buf[1])
if value is None:
value = ROMAN_TO_INT[buf.popleft()]
else:
buf.clear()
result += value
if buf:
# One item remaining in `buf`
result += ROMAN_TO_INT[buf.pop()]
return result