12.integer-to-roman

題目

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

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

For example, 2 is written as II in Roman numeral, just two one's added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II.

I can be placed before V (5) and X (10) to make 4 and 9. X can be placed before L (50) and C (100) to make 40 and 90. C can be placed before D (500) and M (1000) to make 400 and 900.

翻譯

把純數字翻譯成羅馬數字符號,2 可以表示為 II;12 可以表示為 XII;27 為 XXVII。 羅馬符號通常跟由大到小排序,但是小的數字可以排在大的數字左邊,當作減項,像數字 4 的符號不是 IIII,而是 IV,數字 9 不是 VIIII,而是 IX,數字 40 為 XL、數字 90 為 XC。

Example:

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

思路

一、極限值/特殊狀況

  1. 4 跟 9 開頭的數字表示規則跟一般的不一樣

二、哪種資料結構解

Hash Table

三、大概會怎麼解

把所有的符號跟相對應的數字對照列出來,input 的 num 除以對照表每個數字,得出符號跟餘數。

型別

解題

其實上面是我寫了兩個下午後,參考別人解法再寫出來的第二個解法,原本自己第一個解法很複雜,但其實時間跟空間並沒有好很多,易讀性也低,記錄一下:

Last updated