2016年11月30日 星期三

[LeetCode] 12. Integer to Roman

轉自LeetCode

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

這題不難,只是要先搞清楚羅馬數字 (參考資料)
SymbolIVXLCDM
Value1510501005001,000
Number494090400900
NotationIVIXXLXCCDCM
然後看一下羅馬數字怎麼表示

1934 = MCMXXXIV = 1000 + 900 + 30 + 4

234 = CCXXXIV = 200 + 30 + 4

19 = XIX = 10 + 9

5 = V

從上面的例子可以知道,能找出幾個斷點,把羅馬數字分成幾類
  • 斷點 : 1、4、5、9、10、40、50、90、100、400、500、900、1000
  • 羅馬數字 : I、IV、V、X、XL、L、XC、C、CD、D、CM、M
例如 3,在 1 - 4 之間,那就是三個1組成,所以是 III

例如 95,在 90 - 100之間,先由一個 90 組成,是 XC;然後減去 90 剩五

剛好是斷點5,所以是 V,最後 95 = XCV

寫成code 如下

沒有留言:

張貼留言