Roman to Integer

Key Idea

Solution

class Solution:
    def romanToInt(self, s: str) -> int:
        output_num = 0

        roman_mapper = {
            "I": 1,
            "V": 5,
            "X": 10,
            "L": 50,
            "C": 100,
            "D": 500,
            "M": 1000
        }

        last_num_roman = None

        for num_roman in s:
            output_num += roman_mapper[num_roman]

            if (
                (last_num_roman == "C" and num_roman in ["M", "D"]) or
                (last_num_roman == "X" and num_roman in ["L", "C"]) or
                (last_num_roman == "I" and num_roman in ["V", "X"])
            ):
                output_num -= 2 * roman_mapper[last_num_roman]

            last_num_roman = num_roman

        return output_num

Complexity