【Leetcode刷題】12. Integer to Roman

原始題目:

12. Integer to Roman

Medium

Roman numerals are represented by seven different symbols:I,V,X,L,C,DandM.

SymbolValueI? ? ? ? ? ? 1V? ? ? ? ? ? 5X? ? ? ? ? ? 10L? ? ? ? ? ? 50C? ? ? ? ? ? 100D? ? ? ? ? ? 500M? ? ? ? ? ? 1000

For example,?two is written asIIin Roman numeral, just two one's added together. Twelve is written as,XII, which is simplyX+II. The number twenty seven is written asXXVII, which isXX+V+II.

Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is notIIII. Instead, the number four is written asIV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written asIX. There are six instances where subtraction is used:

Ican be placed beforeV(5) andX(10) to make 4 and 9.

Xcan be placed beforeL(50) andC(100) to make 40 and 90.

Ccan be placed beforeD(500) andM(1000) to make 400 and 900.

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

Example 1:

Input:3Output:"III"

Example 2:

Input:4Output:"IV"

Example 3:

Input:9Output:"IX"

Example 4:

Input:58Output:"LVIII"Explanation:L = 50, V = 5, III = 3.

Example 5:

Input:1994Output:"MCMXCIV"Explanation:M = 1000, CM = 900, XC = 90 and IV = 4.

分析:因為我比較小白撤卢,所以用了一種比較暴力的方法:

在轉換過程中,我用一個字典存儲了所有不規(guī)則的轉換規(guī)律,注意我的‘規(guī)則’僅僅是指阿拉伯數(shù)字里每增加1,在羅馬數(shù)字后面追加‘I’。

通過將數(shù)字的每一位拆解開熙涤,再按照字典里的定義一一對應,可以完成轉換數(shù)字的任務。

實現(xiàn)代碼:

class Solution(object):

? ? def intToRoman(self, num):

? ? ? ? """

? ? ? ? :type num: int

? ? ? ? :rtype: str

? ? ? ? """

? ? ? ? dict = {

? ? ? ? ? ? 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'

? ? ? ? }

? ? ? ? result = ''

? ? ? ? num_str = str(num) # 轉化為字符串形式比較好按位分割

? ? ? ? count = len(num_str) - 1 # 通過count確定是個十百千位

? ? ? ? for digit_one in num_str: #從最高位開始捣卤,如298忍抽,現(xiàn)在的digit_one=2

? ? ? ? ? ? digit_one = int(digit_one)

? ? ? ? ? ? digit = int(digit_one) * (10 ** count) # digit是還原過后的,digit=200

? ? ? ? ? ? if digit in dict.keys(): # 在字典中搜索兩百沒找到董朝,于是進入elif

? ? ? ? ? ? ? ? result += dict[digit]

? ? ? ? ? ? elif digit_one < 5: # 追加l

? ? ? ? ? ? ? ? result += digit_one * dict[10 ** count]

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? result = result + dict[5*(10**count)] + (digit_one-5) * dict[10 ** count] # 該位數(shù)字大于五的追加規(guī)則

? ? ? ? ? ? count -= 1 # 進入低一位

? ? ? ? return result

ps:最后放一個我看到別人寫的比我簡潔得多的代碼鸠项,供自己學習

https://www.cnblogs.com/zuoyuan/p/3779581.html

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市子姜,隨后出現(xiàn)的幾起案子祟绊,更是在濱河造成了極大的恐慌,老刑警劉巖哥捕,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牧抽,死亡現(xiàn)場離奇詭異,居然都是意外死亡遥赚,警方通過查閱死者的電腦和手機扬舒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凫佛,“玉大人讲坎,你說我怎么就攤上這事±⒀Γ” “怎么了晨炕?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長毫炉。 經(jīng)常有香客問我瓮栗,道長,這世上最難降的妖魔是什么碘箍? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任遵馆,我火速辦了婚禮,結果婚禮上丰榴,老公的妹妹穿的比我還像新娘货邓。我一直安慰自己,他們只是感情好四濒,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布换况。 她就那樣靜靜地躺著,像睡著了一般盗蟆。 火紅的嫁衣襯著肌膚如雪戈二。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天喳资,我揣著相機與錄音觉吭,去河邊找鬼。 笑死仆邓,一個胖子當著我的面吹牛鲜滩,可吹牛的內(nèi)容都是我干的伴鳖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼徙硅,長吁一口氣:“原來是場噩夢啊……” “哼榜聂!你這毒婦竟也來了?” 一聲冷哼從身側響起嗓蘑,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤灰嫉,失蹤者是張志新(化名)和其女友劉穎猛拴,沒想到半個月后牲迫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體验游,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年业簿,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘤礁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡梅尤,死狀恐怖柜思,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巷燥,我是刑警寧澤赡盘,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站缰揪,受9級特大地震影響陨享,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钝腺,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一抛姑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艳狐,春花似錦定硝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镀虐,卻和暖如春箱蟆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刮便。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工空猜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓辈毯,卻偏偏與公主長得像久信,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子漓摩,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容