12.?整數(shù)轉(zhuǎn)羅馬數(shù)字
羅馬數(shù)字包含以下七種字符:I奏赘,V,X幕屹,L蓝丙,C,D和M望拖。
字符數(shù)值 ? ?I? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ?V? ? ? ? ? ? 5
? ? ? ? ? ? ? ? ?X? ? ? ? ? ? 10
? ? ? ? ? ? ? ? ?L? ? ? ? ? ? 50
? ? ? ? ? ? ? ? ?C? ? ? ? ? ? 100
? ? ? ? ? ? ? ? ? D? ? ? ? ? ? 500
? ? ? ? ? ? ? ? ? M? ? ? ? ? ? 1000
例如渺尘, 羅馬數(shù)字 2 寫(xiě)做II,即為兩個(gè)并列的 1靠娱。12 寫(xiě)做XII沧烈,即為X+II。 27 寫(xiě)做XXVII, 即為XX+V+II像云。
通常情況下锌雀,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。但也存在特例迅诬,例如 4 不寫(xiě)做IIII腋逆,而是IV。數(shù)字 1 在數(shù)字 5 的左邊侈贷,所表示的數(shù)等于大數(shù) 5 減小數(shù) 1 得到的數(shù)值 4 惩歉。同樣地,數(shù)字 9 表示為IX俏蛮。這個(gè)特殊的規(guī)則只適用于以下六種情況:
I可以放在V(5) 和X(10) 的左邊撑蚌,來(lái)表示 4 和 9。
X可以放在L(50) 和C(100) 的左邊搏屑,來(lái)表示 40 和?90争涌。
C可以放在D(500) 和M(1000) 的左邊,來(lái)表示?400 和?900辣恋。
給定一個(gè)整數(shù)亮垫,將其轉(zhuǎn)為羅馬數(shù)字。輸入確保在 1?到 3999 的范圍內(nèi)伟骨。
示例?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]