天天看點

leetcode: 12. Integer to Roman

Problem

# Given an integer, convert it to a roman numeral.
#
# Input is guaranteed to be within the range from 1 to 3999.           

複制

AC

class Solution():
    def intToRoman(self, x):
        int2roman = {
            1: "I", 4: "IV", 5: "V", 9: "IX",
            10: "X", 40: "XL", 50: "L", 90: "XC",
            100: "C", 400: "CD", 500: "D", 900: "CM",
            1000: "M"
        }
        builder = []
        for item in reversed(sorted(int2roman.keys())):
            while x >= item:
                builder.append(int2roman[item])
                x -= item
        return "".join(builder)


if __name__ == "__main__":
    assert Solution().intToRoman(999) == 'CMXCIX'
    assert Solution().intToRoman(3999) == 'MMMCMXCIX'           

複制