給出數字到字母的對映如下(與**按鍵相同)。注意 1 不對應任何字母。
輸入:digits = "23"
輸出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
使用雜湊表儲存每個數字對應的所有可能的字母,然後進行回溯操作
回溯過程中維護乙個字串,表示已有的字母排列,該字串初始為空。每次取**號碼的一位數字,從雜湊表中獲得該數字對應的所有可能的字母,並將其中的乙個字母插入到已有的字母排列後面,然後繼續處理**號碼的後一位數字,直到處理完**號碼中的所有數字,即得到乙個完整的字母排列。
然後進行回退操作,遍歷其餘的字母排列
class solution:
def lettercombinations(self, digits: str) -> list[str]:
if not digits:
return
phonemap =
n = len(digits)
ans =
tmp =
def backtrack(index):
if index==n:
else:
digit = digits[index]
for letter in phonemap[digit]:
backtrack(index+1)
tmp.pop()
backtrack(0)
return ans
LeetCode 電話號碼的字母組合
號碼的字母組合,是大家熟悉的字母九宮格鍵盤,按照題目要求盡可能的按照字母排序 所有的資料盤排列和下圖大致相當 解題思想是 相鄰的兩個數字中,第乙個數字所包含的字母是根節點,第二個數字包含的字母自動分配到每個根節點上,按照這種思想,我們只需要處理相鄰兩個數字,對每個根節點進行擴充套件,得到所有想要的組...
LeetCode 電話號碼的字母組合
給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 說明 儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。回溯演算法是不是很是陌生...
leetcode 電話號碼的字母組合
題目 給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf include include using namespace std int main ...