千问    LeetCode 17. 电话号码的字母组合 Python3实现 LeetCode 17. 电话号码的字母组合是一道经典的回溯/笛卡尔积问题。核心思路是遍历每个数字对应的字母逐层组合。核心思路建立数字到字母的映射表手机九宫格对每个数字取出其对应的所有字母用迭代或回溯生成所有组合Python3 完整实现解法一迭代法推荐最直观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, } result [] for digit in digits: result [prev ch for prev in result for ch in phone[digit]] return result解法二回溯法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, } result [] def backtrack(index, path): if index len(digits): result.append(path) return for ch in phone[digits[index]]: backtrack(index 1, path ch) backtrack(0, ) return result解法三itertools.product最简洁from itertools import productclass 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, } letters [phone[d] for d in digits] return [.join(combo) for combo in product(*letters)]三种解法对比项目 迭代法 回溯法 itertools时间复杂度 O(4ⁿ · n) O(4ⁿ · n) O(4ⁿ · n)空间复杂度 O(4ⁿ) O(n) 递归栈 O(4ⁿ)可读性 ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐ 最简洁面试推荐 ✅ 好讲思路 ✅ 通用模板 ❌ 依赖库函数其中 n 为 digits 长度4 是因为数字 7、9 各有 4 个字母是最坏情况。关键细节空输入直接返回 []题目要求输入为空时返回空列表不是 [“”]迭代法的核心每处理一个新数字就把已有组合与新数字的每个字母做笛卡尔积用列表推导式一行搞定回溯法的关键index 表示当前处理到第几个数字path 是当前已拼好的字符串到达末尾时收集结果product(letters)解包将列表展开为多个参数product(“abc”, “def”) 等价于求两个集合的笛卡尔积面试中迭代法最好讲清楚思路回溯法是最通用的模板适合扩展到更复杂的组合问题。这道题的逆题——给定字符串判断是否为有效罗马数字LeetCode 38要不要也用 Python 写一遍

相关新闻

最新新闻

持续推理智能体:从单次问答到工程化落地的核心要点

持续推理智能体:从单次问答到工程化落地的核心要点

Perplexity CEO 对持续推理智能体的展望,是近期 AI 应用领域讨论比较多的方向之一。这个展望的核心逻辑并不复杂:当下多数 AI 产品还在做单轮问答,而未来有效的智能体必须能够持续推理。长期跟踪 Perplexity 产品演进的人会发现,它…

2026/8/30 17:38:52
用Codex从0到1发布npm库:完整工程链路实战

用Codex从0到1发布npm库:完整工程链路实战

最近在逛技术社区时,我发现一个有意思的现象:Codex 相关的讨论热度非常高,但很多人的关注点还停留在“它能帮我写多少代码”。直到我看见一个开发者的分享——“我用 Codex 把一个 npm 库从 0 推到 1.0.0”,我才意识到&#xff0c…

2026/8/30 17:38:52
Java学习之SPI、JDBC、SpringFactoriesLoader、Dubbo

Java学习之SPI、JDBC、SpringFactoriesLoader、Dubbo

概述 SPI,Service Provider Interface,一种服务发现机制,指一些提供给你继承、扩展,完成自定义功能的类、接口或方法。 在SPI机制中,服务提供者为某个接口实现具体的类,而在运行时通过SPI机制,查…

2026/8/30 17:38:52
Trapcode Suite 2023粒子特效实战:从模块选型到Logo汇聚全流程

Trapcode Suite 2023粒子特效实战:从模块选型到Logo汇聚全流程

简介:在视频合成与MG动画领域,粒子特效是营造视觉冲击力的关键手段。AE内置的CC Particle World在发射器类型、物理控制与粒子形态上存在明显局限,难以满足片头级项目需求。Trapcode Suite作为一套完整的3D粒子系统,以Particular为…

2026/8/30 17:38:52
File Channel 底层解析:深入理解 Checkpoint 机制、日志滚动与数据恢复流程

File Channel 底层解析:深入理解 Checkpoint 机制、日志滚动与数据恢复流程

File Channel 底层解析:深入理解 Checkpoint 机制、日志滚动与数据恢复流程1. File Channel 概述与架构设计File Channel 是 Flume 中的一个重要组件,用于将事件数据持久化到磁盘上,提供数据传输的可靠性和持久性保障。与 Memory Channel 不同…

2026/8/30 17:38:52
claude-code-main.zip 安装排障:从解压报错到跑通 claude 命令

claude-code-main.zip 安装排障:从解压报错到跑通 claude 命令

简介:命令行工具的分发方式正在从单一安装包走向源码压缩包,zip 因而成为开发者最熟悉的格式之一。但 zip 不等于绿色软件,很多工具依赖特定的运行时环境,Claude Code 就是典型代表——它本质上是一个运行在 Node.js 之上的 JavaS…

2026/8/30 17:33:52