题目描述:
罗马数字包含以下七种字符: I
, V
, X
, L
,C
,D
和 M
。
字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000
例如, 罗马数字 2 写做 II
,即为两个并列的 1。12 写做 XII
,即为 X
+ II
。 27 写做 XXVII
, 即为 XX
+ V
+ II
。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII
,而是 IV
。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX
。这个特殊的规则只适用于以下六种情况:
I
可以放在V
(5) 和X
(10) 的左边,来表示 4 和 9。X
可以放在L
(50) 和C
(100) 的左边,来表示 40 和 90。C
可以放在D
(500) 和M
(1000) 的左边,来表示 400 和 900。
给你一个整数,将其转为罗马数字。
题解:
class Solution:
def intToRoman(self, num: int) -> str:
roman_dict = {
1000: "M", 900: "CM", 500: "D", 400: "CD",
100: "C", 90: "XC", 50: "L", 40: "XL",
10: "X", 9: "IX", 5: "V", 4: "IV",
1: "I"
}
roman_num = ''
for key in roman_dict:
while num >= key:
roman_num += roman_dict[key]
num -= key
return roman_num
思路:
-
定义了一个字典
roman_dict
,其中存储了整数和罗马数字的对应关系,按照从大到小的顺序排列。 -
创建一个空字符串
roman_num
,用来存储最终的罗马数字表示。 -
通过一个循环遍历
roman_dict
中的整数值,按照从大到小的顺序。在每次循环中,如果当前整数值大于等于value
,则将对应的罗马数字加入到roman_num
中,并将整数值减去value
。重复这个过程直到整数值小于value。
-
最后返回得到的
roman_num
,即为输入整数对应的罗马数字表示。