力扣17 電話號碼的字母組合

2022-05-27 12:03:11 字數 1916 閱讀 4160

原題

解法1、2都是大佬寫的,題解鏈結

1、回溯

1

class

solution:

2def lettercombinations(self, digits: str) ->list[str]:3if

not digits: return

45 phone =

1314

defbacktrack(conbination,nextdigit):

15if len(nextdigit) ==0:

1617

else:18

for letter in

phone[nextdigit[0]]:

19 backtrack(conbination + letter,nextdigit[1:])

2021 res =

22 backtrack(''

,digits)

23return res

2、佇列

1

class

solution:

2def lettercombinations(self, digits: str) ->list[str]:3if

not digits: return

4 phone = ['

abc','

def','

ghi','

jkl','

mno','

pqrs

','tuv

','wxyz']

5 queue = [''] #

初始化佇列

6for digit in

digits:

7for _ in

range(len(queue)):

8 tmp =queue.pop(0)

9for letter in phone[ord(digit)-50]:#

這裡我們不使用 int() 轉換字串,使用ascii碼

11return queue

3、與大佬的相比我的**就比較爛了

1

class

solution:

2def lettercombinations(self, digits: str) ->list[str]:

3 ans,dic,lens,cnt =,{},len(digits),0

4 dic['

2'],dic['

3'],dic['

4'],dic['

5'] = '

abc','

def','

ghi','

jkl'

5 dic['

6'],dic['

7'],dic['

8'],dic['

9'] = '

mno','

pqrs

','tuv

','wxyz'6

for i in

range(lens):

7if i ==0:

8 ans += ['']9

for j in

range(len(ans)):

10for c in

dic[digits[i]]:

12 i = len(ans) - 1

13while i >= 0 and len(ans[i]) ==lens:

14 i -= 1

15return ans[i + 1:]

1617

力扣 17 電話號碼的字母組合

c 刷題學習筆記目錄 c 百萬併發網路通訊 筆記目錄 回溯三步法 字串到字母的對映 同樣是使用 演算法套路 回溯篇 回溯三步法 中提到的回溯三步法 但是剛開始使用了unordered map來進行數字 字母的對映,所以略顯麻煩,看到 隨想錄 大佬的題解回溯演算法 號碼的字母組合,原來可以使用stri...

力扣17題 電話號碼的字母組合

給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 說明 儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。因為給出的號碼字串長...

17 電話號碼的字母組合

給定乙個數字字串,返回數字所有可能表示的字母組合。下面給出數字到字母的對映 和 號碼一樣 輸入 數字字串 23 輸出 ad ae af bd be bf cd ce cf 思路1 採用迭代的方法。class solution if digits.empty return vector vectorr...