12.整数转罗马数字

难度:中等
题目描述:
思路:
这题是罗马数字系列的第二题,上一题罗马数字转整数,映射起来比较简单。这题也是纯靠映射,从后往前开始,设置一个乘数因子,然后碰到4或者9特殊判断一下。

class Solution:
    def intToRoman(self, num: int) -> str:
        #思路:从后往前,用fact作为基数,遇到4和9则进行判断
        subs = {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'}
        res = ""
        num = str(num)
        mulfct = 1
        for i in range(len(num)-1, -1, -1):
            tmp = int(num[i]) * mulfct
            mulfct *= 10
            if num[i] == "4":
                res = subs[tmp] + res
                continue
            elif num[i] == "9":
                res = subs[tmp] + res
              continue
            tmp_res = ""
            for i in subs:
                while tmp > 0 and tmp - i >= 0:
                    tmp -= i
                    tmp_res += subs[i]
                # tmp_res = tmp_res[::-1]
            res = tmp_res + res
        return res

你可能感兴趣的:(朱滕威的面试之路)