目录
1.题目描述
2.题目分析
这题乍一看好像好麻烦的样子,什么数字是不是4或9开头之类的,巴拉巴拉了一大堆,但仔细一看其实题目把每个数值对应的罗马字符已经给我们了。仔细看,其中4,9开头的转化在第二条规则里面提到了。
所以我们可以用两个列表来依次储存阿拉伯数字,罗马数字的对应值。让他们的下标对应起来,这样就可以使用一个索引来同时表示两个列表中对应的下标了。
3.代码实现
class Solution:
def intToRoman(self, num: int) -> str:
values = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
symbols = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
roman_num = ''
i = 0
while num > 0:
# num // values[i] 用来确定 valus 里从下标为0的数到最后一个数 ,它们每个出现的次数
for _ in range(num // values[i]):
#然后把根据索引,把罗马数字依次填入字符串 roman_num 中
roman_num += symbols[i]
num -= values[i]
i += 1
return roman_num