leetcode 12. Integer to Roman

给一个整数(1-3999),转化成落马数字。直接模拟吧,注意特盘4和9的情况。罗马数字的规则参考http://zhidao.baidu.com/link?url=aFXj4HeKQCT1gv38YE7jjHz2f0KUiGS2E2yoCMRV4c3KDa9HnWo1FOIJR6l1MthPHSsEKMLp08VfkhiZ7wh3KK

大致以下几条:

  (1)基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个;放在大数的左边只能用一个。
  (2)不能把基本数字 V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目,只能使用一个。
  (3)V 和 X 左边的小数字只能用Ⅰ。
  (4)L 和 C 左边的小数字只能用×。
  (5)D 和 M 左 边的小数字只能用 C 。
class Solution(object):
    def intToRoman(self, num):
        """
        :type num: int
        :rtype: str
        """
        nums = [1000,500,100,50,10,5,1]
        res = ''
        x = num // 1000

        for i in range(x) : res = res + 'M'
        num = num % 1000
        x = num // 100 
        ti = 0
        if x == 9: 
            res = res + 'CM'
        elif x == 4: 
            res = res + 'CD'
        else:

            if (x>=5):
                ti = x - 5
                res = res + 'D'
            else: 
                ti = x
                
            for i in range(ti) : res = res + 'C'

        num = num % 100
        x = num // 10
        if x == 9:
            res = res + 'XC'
        elif x == 4: 
            res = res + 'XL'
        else:
            if (x >= 5) :
                ti = x - 5
                res = res + 'L'
            else : ti = x
            for i in range(ti) : res = res +'X'

        num = num % 10
        x = num
        if x == 9:
            res = res + 'IX'
        elif x == 4: res = res + 'IV'
        else : 
            if (x >= 5):
                ti = x - 5
                res = res + 'V'
            else: ti = x
            for  i in range(ti) :res = res + 'I'
        return res





你可能感兴趣的:(杂题)