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