[LeetCode][Python]12. Integer to Roman
1702 ワード
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
ローマ数字は7つのローマ字を数字、すなわちI(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)として用いる.記数の方法:同じ数字が連写され、表す数はこれらの数字が加算された数に等しく、例えばIII=3である. 小さい数字は大きい数字の右側にあり、表す数はこれらの数字を加算した数に等しく、例えばVIII=8、IX=12である. の小さい数字(I、X、Cに限る)は大きい数字の左側にあり、表す数は大きい数から小数を減らした数に等しい.例えばIV=4、IX=9; 考え方:タイトルの最大入力値は3999で、まずローマ字千位、百位、十位、個位の各表現を得て、それから/と%号で各ビット数の値を得て、例えばいくつかの千位、いくつかの百位、いくつかの十位といくつかのビット.
Input is guaranteed to be within the range from 1 to 3999.
:
I - 1
V - 5
X - 10
L - 50
C - 100
D - 500
M - 1000
ローマ数字は7つのローマ字を数字、すなわちI(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)として用いる.記数の方法:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
"""
roman = [["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"],
["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"],
["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"], ["", "M", "MM", "MMM"]]
res = []
res.append(roman[3][num / 1000 % 10])
res.append(roman[2][num / 100 % 10])
res.append(roman[1][num / 10 % 10])
res.append(roman[0][num % 10])
return "".join(res)
if __name__ == '__main__':
sol = Solution()
num = 3999
print sol.intToRoman(num)
print sol.intToRoman(1980)