17. 电话号码的字母组合

17. 电话号码的字母组合

题目

17. 电话号码的字母组合(中等)

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

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

电话按键数字到字母的映射|259

示例 1:

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

示例 2:

输入: digits = "2"
输出: ["a","b","c"]

数据范围:1 ≤ digits.length ≤ 4,digits[i] 是范围 ['2', '9'] 的一个数字

思路

回溯:逐位处理 digits,每位从 d[数字] 对应的字母集中选一个加入当前组合,凑满全部位后收集结果。d 用下标 0-9 对应数字,0、1 留空。

代码

class Solution:
    def letterCombinations(self, digits: str) -> list[str]:
        d = ['', '', 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
        ans = []
        cur = []
        n = len(digits)

        def fun(i):
            if i == n:
                ans.append(''.join(cur))
                return

            for c in d[int(digits[i])]:
                cur.append(c)
                fun(i+1)
                cur.pop()
        fun(0)
        return ans

17. 电话号码的字母组合
https://mingsm17518.github.io/2026/10/05/刷题笔记/Hot100/回溯/17. 电话号码的字母组合/
作者
Ming
发布于
2026年10月5日
更新于
2026年10月5日
许可协议