Leetcode: Integer to Roman

Question

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

Show Tags
Show Similar Problems


Solution

Get idea from here.

class Solution(object):
    def intToRoman(self, num):
        """
        :type num: int
        :rtype: str
        """

        if num<1 or num>3999:
            return ''

        digit = 1000
        digits = []
        while digit>0:
            digits.append(num/digit)
            num %= digit
            digit /= 10

        res = []
        res.append( self.convert(digits[0],'M','','') )
        res.append( self.convert(digits[1],'C','D','M') )
        res.append( self.convert(digits[2],'X','L','C') )
        res.append( self.convert(digits[3],'I','V','X') )

        res = ''.join(res)
        return res

    def convert(self, digit, one, five, ten):
        res = []
        if digit==9:
            res.append(one)
            res.append(ten)
        elif digit>=5:
            res.append(five)
            for ind in range(5,digit):
                res.append(one)
        elif digit==4:
            res.append(one)
            res.append(five)
        elif digit>=1:
            for ind in range(digit):
                res.append(one)

        res = ''.join(res)

        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值