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