用 Python 将罗马数字转换为整数的程序?

pythonserver side programmingprogramming更新于 2026/2/16 7:40:17

假设我们有一个罗马数字;我们必须将其转换为数字。我们知道罗马数字由从左到右从大到小的符号表示,唯一的例外是当表示小于一个符号时。一些罗马数字符号含义如下:

  • 'M': 1000

  • 'D': 500

  • 'C': 100

  • 'L': 50

  • 'X': 10

  • 'V': 5

  • 'I': 1

因此,如果输入为numeric = "MCLXVI",则输出将为1166,因为M = 1000,C = 100,总计为 1100,则 L = 50、X = 10、VI = 6,因此总计为 1166。

要解决这个问题,我们将遵循以下步骤:

取上述数字列表

  • ans := 0

  • n := 数字的大小

  • 对于每个索引 idx 和值 c 数字,执行

    • 如果 idx < n - 1 且 d[c] < d[numeral[idx + 1]],则

      • ans := ans - d[c]

    • 否则,

      • ans := ans + d[c]

  • 返回 ans

让我们看看以下实现以便更好地理解:

示例

class Solution:
   def solve(self, numeral):
      d = {"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1}
      ans = 0
      n = len(numeral)
      for (idx, c) in enumerate(numeral):
         if idx < n - 1 and d[c] < d[numeral[idx + 1]]:
            ans -= d[c]
         else:
            ans += d[c]
      return ans

ob = Solution()
numeral = "MCLXVI"
print(ob.solve(numeral))

输入

"MCLXVI"

输出

1166

相关文章


有用资源