原題
解法1、2都是大佬寫的,題解鏈結
1、回溯
1class
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、佇列
1class
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、與大佬的相比我的**就比較爛了
1class
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...