leetcode hot100 17. 电话号码的字母组合 medium 递归回溯

每一层选择"当前数字"对应的一个字母。

python 复制代码
phone = {
    "2": "abc",
    "3": "def",
    "4": "ghi",
    "5": "jkl",
    "6": "mno",
    "7": "pqrs",
    "8": "tuv",
    "9": "wxyz"
}

切片回溯

python 复制代码
class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if not digits:
            return []

        phone = {
            "2": "abc", "3": "def",
            "4": "ghi", "5": "jkl",
            "6": "mno", "7": "pqrs",
            "8": "tuv", "9": "wxyz"
        }

        res = []

        def backtrack(digits, tmp):  #(待选列表,已有排列)
        	 #待选列表为空(所有数字有选完了)
            if not digits:
                res.append(tmp)  # 当前排列加入res
                return 

            letters = phone[digits[0]]   # 待选列表的第一个数字,对应的phone字母
            for ch in letters:
                # 递归,继续选下一个digits数字
                backtrack(digits[1:], tmp + ch)

    
        backtrack(digits, "")
        return res

时间复杂度:O(3ⁿ × n)

每个数字平均对应 3 个字母,字符串长度 n

空间复杂度:

切片写法每层都会创建新字符串:O(n^2)

相关推荐
cui_ruicheng32 分钟前
LangChain 应用开发(十二):Agent 中间件与内置中间件
人工智能·python·中间件·langchain
zx_7414848137 分钟前
【Python 入门】Python 正则表达式零基础讲解:基础语法 + 元字符 + 常用案例
python·正则表达式
weixin1997010801643 分钟前
《大促护航:电商API限流与降级,双11峰值500万调用的架构复盘》(附Python源码)
python·架构·wpf
2601_9578838444 分钟前
2026年8月:华硕笔记本维修相关信息
python·电脑
lzqrzpt1 小时前
临沂LED驱动电源工程选型与直销工厂评估标准解析
python·单片机·嵌入式硬件
老郑聊AI业财智造1 小时前
给大模型装上“金融之眼”:Kronos-Report的量化预测架构与技术全景剖析
人工智能·python·深度学习·语言模型·金融·架构·软件工程
问天_观心1 小时前
深入学习Transformer(一)
人工智能·python·深度学习·神经网络·学习·transformer
雷帝木木1 小时前
DVC数据版本控制实战:让训练数据像代码一样可追溯
人工智能·python·深度学习·机器学习
月光船幽幽1 小时前
五层探针的哲学跃迁
人工智能·python
阿图灵2 小时前
OpenCV 轮廓与属性:查找轮廓、面积周长、形状拟合与点测试
图像处理·人工智能·python·opencv·计算机视觉·轮廓