这道题不知道为什么会被判定为中等题,因为罗马数字的数目是有限的,然后前前后后一共就那么多种情况,直接遍历然后除法取整,即可得出该罗马数字的数目,具体代码如下:
class Solution:
def intToRoman(self, num: int) -> str:
table = {1:'I', 4:'IV', 5:'V', 9:'IX', 10:'X', 40:'XL', \
50:'L', 90:'XC', 100:'C', 400:'CD', 500:'D', \
900:'CM', 1000:'M'}
keys = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
res = ''
for key in keys:
for i in range(num // key):
res += table[key]
num = num % key
return res
实验结果