Roman to Integer

Problem Id: 13 Difficulty: Easy Tag: Math Tag: String


Intuition

Simply use a mapping to solve it. Note subtraction need to be handled before normal numbers.

Solution


class Solution:
    def romanToInt(self, s: str) -> int:
        mapping = [
            ["IV", 4],
            ["IX", 9],
            ["XL", 40],
            ["XC", 90],
            ["CD", 400],
            ["CM", 900],
            ["I", 1],
            ["V", 5],
            ["X", 10],
            ["L", 50],
            ["C", 100],
            ["D", 500],
            ["M", 1000]
        ]
        res = 0
        for p, v in mapping:
            res += s.count(p) * v
            s = s.replace(p, "")
        return res