exercicio 13 resolvido com python
This commit is contained in:
84
13-roman_to_integer/python/13.py
Normal file
84
13-roman_to_integer/python/13.py
Normal file
@ -0,0 +1,84 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user