百度文心大模型5.1 LeetCode 17. 电话号码的字母组合 Python3实现

发布时间:2026/8/30 4:51:33

百度文心大模型5.1    LeetCode 17. 电话号码的字母组合 Python3实现
LeetCode 17. 电话号码的字母组合 - Python3 实现题目描述给定一个仅包含数字2-9的字符串返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下与电话按键相同2 - abc 3 - def 4 - ghi 5 - jkl 6 - mno 7 - pqrs 8 - tuv 9 - wxyz解题思路方法思路适用场景回溯法逐个数字深搜拼接所有可能组合通用推荐队列/BFS逐层扩展组合理解直观迭代法用列表逐步累积结果代码简洁Python3 代码实现方法一回溯法推荐fromtypingimportListclassSolution:defletterCombinations(self,digits:str)-List[str]:# 边界情况空字符串ifnotdigits:return[]# 数字到字母的映射phone_map{2:abc,3:def,4:ghi,5:jkl,6:mno,7:pqrs,8:tuv,9:wxyz}result[]defbacktrack(index:int,path:str): index: 当前处理到第几个数字 path: 当前已拼接的字符串 # 递归终止所有数字都处理完ifindexlen(digits):result.append(path)return# 获取当前数字对应的字母digitdigits[index]lettersphone_map[digit]# 遍历每个字母继续递归forletterinletters:backtrack(index1,pathletter)backtrack(0,)returnresult方法二迭代法fromtypingimportListclassSolution:defletterCombinations(self,digits:str)-List[str]:ifnotdigits:return[]phone_map{2:abc,3:def,4:ghi,5:jkl,6:mno,7:pqrs,8:tuv,9:wxyz}result[]# 初始化为空字符串fordigitindigits:result[prevcurforprevinresultforcurinphone_map[digit]]returnresult方法三队列 BFSfromtypingimportListfromcollectionsimportdequeclassSolution:defletterCombinations(self,digits:str)-List[str]:ifnotdigits:return[]phone_map{2:abc,3:def,4:ghi,5:jkl,6:mno,7:pqrs,8:tuv,9:wxyz}queuedeque([])fordigitindigits:# 当前层的组合数量level_sizelen(queue)for_inrange(level_size):currentqueue.popleft()forletterinphone_map[digit]:queue.append(currentletter)returnlist(queue)测试代码if__name____main__:solSolution()# 测试用例 1digits123print(f输入: {digits1})print(f输出:{sol.letterCombinations(digits1)})# 期望: [ad,ae,af,bd,be,bf,cd,ce,cf]print()# 测试用例 2digits2print(f输入: {digits2})print(f输出:{sol.letterCombinations(digits2)})# 期望: []print()# 测试用例 3digits32print(f输入: {digits3})print(f输出:{sol.letterCombinations(digits3)})# 期望: [a,b,c]复杂度分析复杂度说明时间复杂度O(3^n × 4^m)n 为对应 3 个字母的数字个数m 为对应 4 个字母的数字个数空间复杂度O(3^n × 4^m)存储所有组合的空间不含递归栈回溯过程图解输入: 23 / | \ a b c ← 数字 2 的字母 /|\ /|\ /|\ d e f d e f d e f ← 数字 3 的字母 结果: ad,ae,af, bd,be,bf, cd,ce,cf递归树: level 0: │ level 1: a ──→ ad, ae, af b ──→ bd, be, bf c ──→ cd, ce, cf三种方法对比方法优点缺点回溯逻辑清晰易于扩展如加剪枝递归有栈开销迭代代码简洁无递归开销不够直观BFS层次分明易于理解队列额外空间LeetCode 17. 电话号码的字母组合 - Python3 实现题目描述给定一个仅包含数字2-9的字符串返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下与电话按键相同2 - abc 3 - def 4 - ghi 5 - jkl 6 - mno 7 - pqrs 8 - tuv 9 - wxyz解题思路方法思路适用场景回溯法逐个数字深搜拼接所有可能组合通用推荐队列/BFS逐层扩展组合理解直观迭代法用列表逐步累积结果代码简洁Python3 代码实现方法一回溯法推荐fromtypingimportListclassSolution:defletterCombinations(self,digits:str)-List[str]:# 边界情况空字符串ifnotdigits:return[]# 数字到字母的映射phone_map{2:abc,3:def,4:ghi,5:jkl,6:mno,7:pqrs,8:tuv,9:wxyz}result[]defbacktrack(index:int,path:str): index: 当前处理到第几个数字 path: 当前已拼接的字符串 # 递归终止所有数字都处理完ifindexlen(digits):result.append(path)return# 获取当前数字对应的字母digitdigits[index]lettersphone_map[digit]# 遍历每个字母继续递归forletterinletters:backtrack(index1,pathletter)backtrack(0,)returnresult方法二迭代法fromtypingimportListclassSolution:defletterCombinations(self,digits:str)-List[str]:ifnotdigits:return[]phone_map{2:abc,3:def,4:ghi,5:jkl,6:mno,7:pqrs,8:tuv,9:wxyz}result[]# 初始化为空字符串fordigitindigits:result[prevcurforprevinresultforcurinphone_map[digit]]returnresult方法三队列 BFSfromtypingimportListfromcollectionsimportdequeclassSolution:defletterCombinations(self,digits:str)-List[str]:ifnotdigits:return[]phone_map{2:abc,3:def,4:ghi,5:jkl,6:mno,7:pqrs,8:tuv,9:wxyz}queuedeque([])fordigitindigits:# 当前层的组合数量level_sizelen(queue)for_inrange(level_size):currentqueue.popleft()forletterinphone_map[digit]:queue.append(currentletter)returnlist(queue)测试代码if__name____main__:solSolution()# 测试用例 1digits123print(f输入: {digits1})print(f输出:{sol.letterCombinations(digits1)})# 期望: [ad,ae,af,bd,be,bf,cd,ce,cf]print()# 测试用例 2digits2print(f输入: {digits2})print(f输出:{sol.letterCombinations(digits2)})# 期望: []print()# 测试用例 3digits32print(f输入: {digits3})print(f输出:{sol.letterCombinations(digits3)})# 期望: [a,b,c]复杂度分析复杂度说明时间复杂度O(3^n × 4^m)n 为对应 3 个字母的数字个数m 为对应 4 个字母的数字个数空间复杂度O(3^n × 4^m)存储所有组合的空间不含递归栈回溯过程图解输入: 23 / | \ a b c ← 数字 2 的字母 /|\ /|\ /|\ d e f d e f d e f ← 数字 3 的字母 结果: ad,ae,af, bd,be,bf, cd,ce,cf递归树: level 0: │ level 1: a ──→ ad, ae, af b ──→ bd, be, bf c ──→ cd, ce, cf三种方法对比方法优点缺点回溯逻辑清晰易于扩展如加剪枝递归有栈开销迭代代码简洁无递归开销不够直观BFS层次分明易于理解队列额外空间

相关新闻

39-UM960-RTK模块-和芯星通

39-UM960-RTK模块-和芯星通

2026/8/30 4:51:33

UM960-RTK模块-和芯星通1.清除 COM1的旧设置 UNLOG COM12.查询版本 [21:15:55.151]发→◇VERSION □ [21:15:55.204]收←◆$command,VERSION,response: OK*04 #VERSION,98,GPS,UNKNOWN,1,694000,0,0,18,499;UM960,R4.10Build9414,HRPT00-S10C-P,2310415000017-MH23A5231505444,…

计算机专业大学期间考什么证?8 个值得考虑的证书与梯队建议

计算机专业大学期间考什么证?8 个值得考虑的证书与梯队建议

2026/8/30 4:51:33

1. 写在前面:证书是加分项,不是万能钥匙 大学期间考什么证,是很多计算机专业同学纠结过的问题。先说一个基本判断:证书只是求职时的加分项,实习经历和项目经验优先级更高。如果时间有限,优先把精力放在实习…

网易校招开发笔试题拆解:算法与基础考点全解析

网易校招开发笔试题拆解:算法与基础考点全解析

2026/8/30 4:41:33

打开那份网易开发岗笔试卷之前,我建议你先想清楚这件事 网易2018校园招聘开发工程师(BJ)笔试卷,现在回看依然是一份很有代表性的考卷。很多人在牛客网上找这份卷子,刷题群里有不少应届生拿着它来问我:这份卷子到现在还有参考价值吗…

STM32蜂鸣器播放旋律:PWM定时器配置与驱动实战

STM32蜂鸣器播放旋律:PWM定时器配置与驱动实战

2026/8/30 7:31:40

我用STM32给蜂鸣器写旋律播放器,是很多初学者接触定时器PWM的第一个小项目。这个项目看起来简单,就是把频率不同的方波喂给蜂鸣器,但真正动手做的时候,会遇到选型、驱动电路、定时器计算、播放节奏控制等一堆问题。这篇文章把我从…

模糊卡尔曼滤波在设备寿命预测中的协同建模方法

模糊卡尔曼滤波在设备寿命预测中的协同建模方法

2026/8/30 7:31:40

简介:本资源是一套面向机械故障诊断与预测性维护领域的MATLAB实践代码包,聚焦于融合模糊逻辑与卡尔曼滤波的剩余寿命预测方法,适用于具备基础信号处理与状态估计知识的研究生、工程师及可靠性分析从业者。压缩包共27个文件(964KB&…

欢聚时代校招笔试题解析:Java开发、运维研发与数据挖掘考点全拆解

欢聚时代校招笔试题解析:Java开发、运维研发与数据挖掘考点全拆解

2026/8/30 7:31:40

前阵子帮一个学弟整理校招复习资料,翻到了自己当年存的欢聚时代2018校招笔试题(Java开发/运维研发/数据挖掘 B卷),顺手把整套题过了一遍。说实话,这套题虽然年号已经过去几年,但命题思路放在今天依然很能打…

WinUtil 完全指南:5 个任务搞定一台新装 Windows——批量装软件、系统优化、故障修复、更新管理

WinUtil 完全指南:5 个任务搞定一台新装 Windows——批量装软件、系统优化、故障修复、更新管理

2026/8/30 7:31:40

WinUtil 完全指南:5 个任务搞定一台新装 Windows——批量装软件、系统优化、故障修复、更新管理 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi…

QT多人聊天室实战:从网络编程到粘包处理的完整架构

QT多人聊天室实战:从网络编程到粘包处理的完整架构

2026/8/30 7:31:40

简介:本资源是面向物联网专业本科生的期末大作业实战项目——基于Qt框架开发的多人聊天室完整源码工程,适用于网络编程、嵌入式通信或物联网应用开发类课程实践。项目采用C与Qt5构建跨平台客户端/服务器架构,涵盖登录认证、消息广播、在线状态…

MySQL安装避坑指南:从版本选择到配置报错自查

MySQL安装避坑指南:从版本选择到配置报错自查

2026/8/30 7:21:39

搜索“MySQL 下载安装教程”,你能得到数以万计的结果。但真正按照那些教程走下来,你很可能在某个步骤突然卡住——要么是安装包下载慢得像断点续传,要么是配置到一半弹出一个意义不明的错误框,要么是费了半天劲装完了,…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…