# Roman numerals are represented by seven different symbols: # I, V, X, L, C, D and M. # # Symbol Value # I 1 # V 5 # X 10 # L 50 # C 100 # D 500 # M 1000 # # For example, 2 is written as II in Roman numeral, just two ones added # together. 12 is written as XII, which is simply X + II. The number 27 is # written as XXVII, which is XX + V + II. # # Roman numerals are usually written largest to smallest from left to right. # However, the numeral for four is not IIII. Instead, the number four is # written as IV. Because the one is before the five we subtract it making four. # The same principle applies to the number nine, which is written as IX. There # are six instances where subtraction is used: # # I can be placed before V (5) and X (10) to make 4 and 9. # X can be placed before L (50) and C (100) to make 40 and 90. # C can be placed before D (500) and M (1000) to make 400 and 900. # # Given a roman numeral, convert it to an integer. # def romanToInt(s: str) -> int: resultado: int = 0 for index in range(len(s)): match s[index]: case "I": if (index < (len(s) - 1)) and ( s[index + 1] == "V" or s[index + 1] == "X" ): continue resultado += 1 case "V": if s[index - 1] == "I" and index > 0: resultado += 4 continue else: resultado += 5 case "X": if (index < (len(s) - 1)) and ( s[index + 1] == "L" or s[index + 1] == "C" ): continue if s[index - 1] == "I" and index > 0: resultado += 9 continue else: resultado += 10 case "L": if s[index - 1] == "X" and index > 0: resultado += 40 continue else: resultado += 50 case "C": if (index < (len(s) - 1)) and ( s[index + 1] == "D" or s[index + 1] == "M" ): continue if s[index - 1] == "X" and index > 0: resultado += 90 continue else: resultado += 100 case "D": if s[index - 1] == "C" and index > 0: resultado += 400 continue else: resultado += 500 case "M": if s[index - 1] == "C" and index > 0: resultado += 900 continue else: resultado += 1000 return resultado