leetcode 12 整數轉羅馬數字

2021-09-12 19:46:39 字數 1772 閱讀 9255

羅馬數字包含以下七種字元:ivxlcdm

字元          數值

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 通常...