首页 > 解决方案 > 检查将罗马数字转换为整数的特定情况

问题描述

我必须创建一个带有 1 个参数的函数,该函数接受一个字符串并将其转换为假定的整数。例如:输入-'IV',输出- 4。如果有人可以提供帮助,将不胜感激。另外,我将把代码供参考。

def FromRoman(string):
    count = 0
    for i in string:
        if i == 'I':
            count += 1
        elif i == "V":
            count += 5
        elif i == 'X':
            count += 10
        elif i == "L":
            count += 50
        elif i == 'C':
            count += 100
        elif i == 'D':
            count += 500
        elif i == 'M':
            count += 1000
    return count

标签: pythonfor-loop

解决方案


假设罗马数字不仅仅是您正在做的单个字母检查(例如 LXIX 之类的东西),这就是我的做法。

我们将遍历罗马数字,并且对于每个“数字”:

  • 如果数字的值小于我们数字中下一个数字的值(“IV”,I 的值小于 V 的值),我们将从答案中减去低位数字的值
  • 否则,我们只需添加数字的值。

这是我在代码中所说的:

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

推荐阅读