leetcode第12题整数转罗马数字--hash

先上自己写的代码

class Solution(object):
    def intToRoman(self, num):
        """
        :type num: int
        :rtype: str
        也像个自动机
        """
        list_re=[]
        dict_Roman={
            0:['','','',''],
            1:['I','X','C','M'],
            2:['II','XX','CC','MM'],
            3:['III','XXX','CCC','MMM'],
            4:['IV','XL','CD'],
            5:['V','L','D'],
            6:['VI','LX','DC'],
            7:['VII','LXX','DCC'],
            8:['VIII','LXXX','DCCC'],
            9:['IX','XC','CM']}
        bit=0
        while num>0:
            list_re.append(dict_Roman[num%10][bit])
            bit+=1
            num=num/10
        return ''.join(list_re[::-1])

官方给的题解思路在于贪心,其实昨天是能想到的,但是当时是想把‘4’和‘9’都贪心进‘5’和‘10’里边失败了。再写一遍

class Solution(object):
    def intToRoman(self, num):
        """
        :type num: int
        :rtype: str
        也像个自动机
        """
        list_re=[]
        list_Roman=[
            [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'],
        ]
        for i in range(len(list_Roman)):
            while num>=list_Roman[i][0]:
               list_re.append(list_Roman[i][1])
               num-=list_Roman[i][0]
        return ''.join(list_re)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值