leetcode python3 整數轉羅馬數字

2021-08-30 09:06:39 字數 2514 閱讀 5782

1.思路:將數字分解成千位數、百位數、個位數,對不同的位數中分3個階段進行討論 ==9的、5-8之間的、==4的、1-3之間的。對於不同的分位數和階段加上不同的符號處理:

2.**

class solution:

def inttoroman(self, num):

str=""

if int(num/1000)>0:

for i in range(int(num/1000)):

str+='m'

num=int(num%1000)

if int(num/100)>0:

if int(num/100)==9:

str+='cm'

elif int(num/100)>4 and int(num/100)<9:

str+='d'

for i in range(int(num/100)-5):

str+='c'

elif int(num/100)==4:

str+='cd'

else:

for i in range(int(num/100)):

str+='c'

num=int(num%100)

if int(num/10)>0:

if int(num/10)==9:

str+='xc'

elif int(num/10)>4 and int(num/10)<9:

str+='l'

for i in range(int(num/10)-5):

str+='x'

elif int(num/10)==4:

str+='xl'

else:

for i in range(int(num/10)):

str+='x'

num=int(num%10)

if num>0:

if num==9:

str+='ix'

elif num>4 and num<9:

str+='v'

for i in range(num-5):

str+='i'

elif num==4:

str+='iv'

else:

for i in range(num):

str+='i'

return str

1.思路:窮舉各個分位數上的1-9的表示方法,直接求餘數即可

2.**

def inttoroman(self, num):】

dic_1=['','i','ii','iii','iv','v','vi','vii','viii','ix']

dic_10 = ['', 'x','xx', '***','xl','l','lx', 'lxx','l***','xc']

dic_100 = ['','c', 'cc', 'ccc', 'cd', 'd','dc', 'dcc', 'dccc', 'cm',]

dic_1000 = ['','m','mm','mmm']

res = ''

res = dic_1000[num//1000]+dic_100[(num%1000)//100]+\

dic_10[(num%100)//10]+dic_1[num%10]

return res

1.思路:將數字區間列出來,找到數字在的區間,然後取區間的低位數,並將數字減去低位數區間,在進一步查詢,

2.**

class solution(object):

def inttoroman(self, num):

if num > 3999 or num < 1:

return 0

# 字典是無序的,所以不使用字典

# 注意這裡一定要是倒序,否則執行會有問題,讓數從大往小查詢適合的羅馬數

num_tuple = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]

roman_tuple = ['m', 'cm', 'd', 'cd', 'c', 'xc', 'l', 'xl', 'x', 'ix', 'v', 'iv', 'i']

# 記錄結果的字串

result_str = ""

# 從整數的列表中開始遍歷

for i in range(len(num_tuple)):

# 從大往小開始判斷,num小於當前數則進行下一次迴圈

# num大於當前數則進行減法運算,並取出相應位置的roman數

while num >= num_tuple[i]:

num -= num_tuple[i]

result_str += roman_tuple[i]

return result_str

if __name__ == '__main__':

s = solution()

print(s.inttoroman(58))

leetcode python3演算法 島嶼個數

1.題目描述 給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1 示例 2 輸入 11000 11000 ...

單排leetcode python3 兩數相加

給定兩個非空鍊錶來代表兩個非負數,位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807class listnode def init...

Leetcode Python3 實現三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 class solu...