假设我们有一个罗马数字;我们必须将其转换为数字。众所周知,罗马数字从左到右从大到小由符号表示,唯一的例外是比符号少一个。罗马数字符号的一些含义如下:
'M':1000
'D':500
'C':100
'L':50
'X':10
'V':5
'我':1
因此,如果输入像数字=“ MCLXVI”,那么输出将为1166,因为M = 1000,C = 100,总计为1100,则L = 50,X = 10,VI = 6,所以总计为1166。
为了解决这个问题,我们将按照以下步骤操作:
如上 获取数字列表
回答:= 0
n:=数字大小
对于每个索引idx和值c的数字,执行
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