美文网首页
12. 整数转罗马数字

12. 整数转罗马数字

作者: 不爱去冒险的少年y | 来源:发表于2018-05-15 08:50 被阅读0次

    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]

    相关文章

      网友评论

          本文标题:12. 整数转罗马数字

          本文链接:https://www.haomeiwen.com/subject/nztedftx.html