在Python中将罗马数字转换为整数的程序?
假设我们有一个罗马数字;我们必须将其转换为数字。正如我们所知,罗马数字是由符号从左到右从大到小表示的,唯一的例外是表示少于一个符号的情况。一些罗马数字符号的含义如下:
- ‘M’:1000
-
‘D’:500
-
‘C’:100
-
‘L’:50
-
‘X’:10
-
‘V’:5
-
‘I’:1
因此,如果输入为 numeral = “MCLXVI”,则输出将为1166,因为 M = 1000,C = 100,总共是1100,然后 L = 50,X = 10,VI = 6,因此总共是1166。
为了解决这个问题,我们将采取以下步骤:
参考上面提到的罗马数字列表
- ans := 0
-
n := numeral 的大小
-
对于每个索引 idx 和值 c 在 numeral 中,执行以下操作:
- 如果 idx < n – 1 并且 d[c] < d[numeral[idx + 1]],那么
- ans := ans – d[c]
- 否则,
- ans := ans + d[c]
- 如果 idx < n – 1 并且 d[c] < d[numeral[idx + 1]],那么
- 返回 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