leetcode-电话号码的字母组合
题目描述
给出数字到字母的映射如下(与电话按键相同)。注意 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 = { "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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异