解题思路
1.首先,将值与对应字符用字典来表示,然后将符号对应的值按有序顺序存储至列表中sums
2.将要转换的整数转换成列表形式,遍历列表,每次遍历:
- 将值取出来算出对应地点位置的现实值 如 32 对应列表 [3,2] 则 3现实值应为 3 x 101 = 30 2
现实值为 2 x 100
- 盘算出现实值后,将对应的值替换成对应的罗马字符,此时从列表末尾开始遍历sums,找到列表比现实值小的第一个值,这个值所代表的键值对即为现实值要替换罗马数字的一部分,依次查找至现实值=0,则代表已找到此现实值所表示的罗马数字
代码
- class Solution(object):
- def intToRoman(self, num):
- """
- :type num: int
- :rtype: str
- """
- dict1 = {
- "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"
- }
- sums = [1,4,5,9,10,40,50,90,100,400,500,900,1000]
- s = ''
- t = [int(i) for i in list(str(num))]
- count = len(t)
- for i in range(count):
- nums = t[i]*pow(10,count-i-1)
- while nums>0:
- for j in range(len(sums)):
- if sums[len(sums)-1-j]<=nums:
- s=s+dict1[str(sums[len(sums)-1-j])]
- nums-=sums[len(sums)-1-j]
- break
- return s
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |