leetcode-电话号码的字母组合

 


题目描述

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
image

输入输出

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

算法思想-回溯

  1. 使用哈希表存储每个数字对应的所有可能的字母,然后进行回溯操作
  2. 回溯过程中维护一个字符串,表示已有的字母排列,该字符串初始为空。每次取电话号码的一位数字,从哈希表中获得该数字对应的所有可能的字母,并将其中的一个字母插入到已有的字母排列后面,然后继续处理电话号码的后一位数字,直到处理完电话号码中的所有数字,即得到一个完整的字母排列。
  3. 然后进行回退操作,遍历其余的字母排列
    image

代码实现

class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if not digits:
return []
phoneMap = {
"2":"abc",
"3":"def",
"4":"ghi",
"5":"jkl",
"6":"mno",
"7":"pqrs",
"8":"tuv",
"9":"wxyz",
}
n = len(digits)
ans = []
tmp = []
def backtrack(index):
if index==n:
ans.append("".join(tmp))
else:
digit = digits[index]
for letter in phoneMap[digit]:
tmp.append(letter)
backtrack(index+1)
tmp.pop()
backtrack(0)
return ans
posted @   topbookcc  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
/* 鼠标点击求赞文字特效 */
点击右上角即可分享
微信分享提示