Simply use a mapping to solve it. Note subtraction need to be handled before normal numbers.
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