羅馬數字包含以下七種字元:i
,v
,x
,l
,c
,d
和m
。
字元 數值
i 1
v 5
x 10
l 50
c 100
d 500
m 1000
例如, 羅馬數字 2 寫做ii
,即為兩個並列的 1。12 寫做xii
,即為x
+ii
。 27 寫做xxvii
, 即為xx
+v
+ii
。
輸入: 3
輸出: "iii"
輸入: 4
輸出: "iv"
分析:
羅馬轉數字,鍵值對關係為。數字轉羅馬,鍵值對關係為。首先定義乙個對映關係,使得從1到1000且包括6種特殊數字的共13個基本數字對應其羅馬數字。接著從大到小遍歷各數字,對於每個數字若其不大於num,則在結果中放置其對應的羅馬數字,並將num減去該數字,然後繼續與該數字比較。若其大於num,則再繼續向前比較直到num減為0。
class solution(object):
def inttoroman(self, num):
""":type num: int
:rtype: str
"""res = ""
# map需要按順序從小到大排
hash_map =
nums = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000]
idx = 12
while num:
if num >= nums[idx]:
res += hash_map[nums[idx]]
num -= nums[idx]
else:
idx -= 1
return res
羅馬轉數字的**,複習一下
class solution:
# @param s
# @return
def romantoint(self, s):
roman =
z = 0
for i in range(0, len(s) - 1):
if roman[s[i]] < roman[s[i+1]]:
z -= roman[s[i]]
else:
z += roman[s[i]]
return z + roman[s[-1]]
*note: the trick is that the last letter is always added. except the last one, if one letter is less than its latter one, this letter is subtracted.
參考:leetcode 12. 整數轉羅馬數字(integer to roman)
LeetCode12 整數轉羅馬數字
題目大意 將乙個1到3999範圍內的整數轉為羅馬數字 題目分析 首先熟悉轉換規則,然後可以使用兩個list儲存對應的對映關係,然後每次從大到小看num是否大於1000,大於900,大於500,若在某個區間的話,就將羅馬數字加進來,num減去相應的數值,直到num為0 展示 class solutio...
Leetcode 12 整數轉羅馬數字
題目 羅馬數字包含以下七種字元 i,v,x,l,c,d和m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000例如,羅馬數字 2 寫做ii,即為兩個並列的 1。12 寫做xii,即為x ii。27 寫做xxvii,即為xx v ii。通常情況下,羅馬數字中小的數字在...
LeetCode 12 整數轉羅馬數字
題目鏈結 題目描述 羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常...