12. 整数转罗马数字

12. 整数转罗马数字

罗马数字包含以下七种字符: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。

给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。

示例 1:

输入:3输出:"III"

示例 2:

输入:4输出:"IV"

示例 3:

输入:9输出:"IX"

示例 4:

输入:58输出:"LVIII"解释:C = 100, L = 50, XXX = 30, III = 3.

示例 5:

输入:1994输出:"MCMXCIV"解释:M = 1000, CM = 900, XC = 90, IV = 4.

class Solution:

    def intToRoman(self, num):

    """

        :typenum: int

        :rtype: str

    """

        number = {}

        list_string = []

        list_num = []

        i=0

        while num>0:

            number[i] = num%10

            num = num//10

            i+=1

        i-=1

        while i>=0:

            list_num =self.check(number[i])

            for jin range(len(list_num)):

                list_string.append(self.int2string(list_num[j]*10**i))

            i-=1

        return ''.join(list_string)

    def check(self, num):

        list_num = []

        if num ==5 or num ==1:

            list_num.append(num)

        elif num ==4:

            list_num.append(1)

            list_num.append(5)

        elif num ==9:

            list_num.append(1)

            list_num.append(10)

        elif num<4:

            for iin range(num):

                list_num.append(1)

        elif num<9:

            list_num.append(5)

            for iin range(num-5):

                list_num.append(1)

        return list_num

    def int2string(self, num):

        switcher = {

            1 :'I',

            5 :'V',

            10 :'X',

            50 :'L',

            100 :'C',

            500 :'D',

            1000 :'M',

            4 :'IV',

            40 :'XL',

            400 :'CD',

            9 :'IX',

            90 :'XC',

            900 :'CM'

        }

    return switcher[num]


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容