Python算法例9 罗马数字转换为整数

1. 问题描述

给定一个罗马数字,将其转换为整数,要求返回结果的取值为1~3999。

2. 问题示例

Ⅳ→4,Ⅻ→12,ⅩⅪ→21,XCVI→99。

3. 代码实现

def roman_to_int(s):
    roman_map = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
    prev_value = 0
    result = 0
    for i in range(len(s) - 1, -1, -1):
        if roman_map[s[i]] < prev_value:
            result -= roman_map[s[i]]
        else:
            result += roman_map[s[i]]
        prev_value = roman_map[s[i]]
    return result

print(roman_to_int("IV"))   # 输出4
print(roman_to_int("XII"))   # 输出12
print(roman_to_int("XXI"))  # 输出21
print(roman_to_int("XCVI")) # 输出99
# roman_to_int 函数通过遍历罗马数字字符串并根据对应规则进行数值累加或减去,
#  最终得到转换后的整数。

Python算法例9 罗马数字转换为整数_第1张图片 

要将罗马数字转换为整数,可以遵循如下的规则:

  1. 创建一个字典,包含罗马数字和对应的整数值。
  2. 从左到右遍历罗马数字,如果当前的数字比下一个数字小,则减去当前数字;否则,加上当前数字。
def roman_to_int(s):
    roman_dict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
    result = 0
    prev_value = 0

    for char in s:
        curr_value = roman_dict[char]
        if curr_value > prev_value:
            result += curr_value - 2 * prev_value
        else:
            result += curr_value
        prev_value = curr_value

    return result

print("IV →", roman_to_int("IV"))
print("XII →", roman_to_int("XII"))
print("XXI →", roman_to_int("XXI"))
print("XCVI →", roman_to_int("XCVI"))
# 首先创建了一个罗马数字和整数值对应的字典。
# 然后,我们遍历给定的罗马数字,根据规则进行加减操作,最终得到转换后的整数值。

 Python算法例9 罗马数字转换为整数_第2张图片

你可能感兴趣的:(Python算法,算法,python)