12 Python3 整數轉羅馬數字

2021-10-07 17:41:32 字數 1058 閱讀 3411

【貪心演算法】

ans = ''

for item in character鍵的集合 from 最大 to 最小:

num 為 0:

結束,退出迴圈

num 不為 0:

if item <= num:

計算需要的個數 cnt = num // item

更新 num -= cnt * item

更新 ans += cnt * item 對應的值

else:

continue

時間複雜度:僅需遍歷一次dict即可結束,故為o(1)。 

空間複雜度:使用的記憶體不會隨著輸入整數的大小而改變,故為o(1)。 

character = 

def romantoint(num: int) -> str:

ans = ''

for item in character.keys():

if num <= 0:

break

if item <= num:

ans += character[item] * (num // item)

num -= (num // item) * item

# print(ans)

return ans

def romantoint(num: int) -> str:

ans = ''

for item in character.keys():

if num <= 0:

break

if item <= num:

cnt, num = divmod(num, item) # 使用內部函式簡化**(但經測試執行速度不及前乙個版本)

ans += cnt * character[item]

# print(ans)

return ans

1、divmod(a, b) 函式返回值為元組(a // b, a % b)

12 整數轉羅馬數和13 羅馬數轉整數

題目的給出了幾種轉換策略,以及在個位是4,6的時候有一些變換。首先乙個整數num的範圍是1 3999,數字的位數情況是 千位,百位,十位,個位。每一位的數字其實就有四種情況,以百位為例 100,300 是一類 400是一類 500,800 是一類 900是一類 整個演算法上沒什麼特別困難的比較好理解...

1 2 Python3 基礎 規範

總的來說,如果安裝的不是安裝的anaconda,pip命令還是經常會用到的 cmd模式使用 當然也可以在pycharm中直接安裝 pep8規範,我另有一篇部落格已經寫好,可以完全參考其中的示例 後續還有很多,遇到了再新增!下附部分 import keyword 1 pip包 模組管理命令,主要以cm...

leetcode 整數轉羅馬數

羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況下,羅馬數字中小...