刷题记录 回溯算法-5:17.电话号码的字母组合

题目:17. 电话号码的字母组合

难度:中等

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

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

本题非常简单

直接套模板可以很快写出

而且无需剪枝优化

算是最省心的回溯题了

代码实现(python):

两种写法

数组记录组合:

复制代码
phone_map = {
    '2': 'abc',
    '3': 'def',
    '4': 'ghi',
    '5': 'jkl',
    '6': 'mno',
    '7': 'pqrs',
    '8': 'tuv',
    '9': 'wxyz',
}
class Solution:
    def backtracking(self, digits, path, ans):
        if len(path) == len(digits):
            ans.append(''.join(path[:]))
            return

        sets = phone_map[digits[len(path)]]
        for ch in sets:
            path.append(ch)
            self.backtracking(digits, path, ans)
            path.pop()

    def letterCombinations(self, digits: str) -> List[str]:
        if len(digits) == 0:
            return []
        ans = []
        self.backtracking(digits, [], ans)
        return ans

字符串记录组合:

复制代码
phone_map = {
    '2': 'abc',
    '3': 'def',
    '4': 'ghi',
    '5': 'jkl',
    '6': 'mno',
    '7': 'pqrs',
    '8': 'tuv',
    '9': 'wxyz',
}
class Solution:
    def backtracking(self, digits, path, ans):
        if len(path) == len(digits):
            ans.append(path)
            return

        sets = phone_map[digits[len(path)]]
        for ch in sets:
            path += ch
            self.backtracking(digits, path, ans)
            path = path[:-1]

    def letterCombinations(self, digits: str) -> List[str]:
        ans = []
        if len(digits) == 0:
            return ans
        self.backtracking(digits, '', ans)
        return ans
相关推荐
stsdddd9 分钟前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码1 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
2601_962885721 小时前
如何用 Python 计算 VaR 和 CVaR(在险价值)?
开发语言·python
yuniko-n1 小时前
【算法】约瑟夫环问题
java·算法
李航19831 小时前
DeepSeekAI建模三 - 实战建模一组柜子
人工智能·python·计算机视觉·ai·ai编程
郝亚军1 小时前
manifest 中 `sha256` 与 `signValue` 的作用
java·开发语言·数据结构
l1t2 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil2082 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE2 小时前
10.18【A】
算法
LMT流氓兔2 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain