当前位置: 首页 > news >正文

【Hot 100 刷题计划】 LeetCode 17. 电话号码的字母组合 | C++ 回溯算法经典模板

LeetCode 17. 电话号码的字母组合

📌 题目描述

题目级别:中等

给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

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

  • 示例 2:
    输入:digits = ""
    输出:[]


💡 破题思路:DFS 深度优先搜索

这道题是经典的组合排列问题。核心思想是将按键数字映射到对应的字母表,然后通过深度优先搜索 (DFS)逐层展开。

本套解法亮点(极简传值法):

  1. 精准映射:在全局定义一个let数组,前两个元素设为空字符串""。这样可以直接通过digs[u] - '0'获取数字,完美对应数组下标,省去了复杂的偏移量计算。
  2. 传值拼接:在递归函数的参数中直接传递拼接好的字符串strr + let[num][i]。这种写法极其直观,代码量极少,非常符合人类顺着树形结构往下探索的直觉逻辑。
  3. 边界拦截:针对 LeetCode 的特殊空串测试用例"",在主函数入口处进行if (digits.empty())特判拦截,防止误生成包含空字符串的数组。

💻 C++ 代码实现 (保留原汁原味)

classSolution{public:intn;vector<string>res;// 巧妙设计:下标直接对应数字,0和1为空vector<string>let={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};vector<string>letterCombinations(string digits){n=digits.size();// 唯一需要注意的致命陷阱:特判空字符串if(n==0)returnres;string str="";dfs(digits,str,0);returnres;}voiddfs(string digs,string strr,intu){// 递归终止条件:当前组合的长度等于输入的数字长度if(strr.size()==digs.size()){res.push_back(strr);return;}// 利用直接映射获取当前数字intnum=digs[u]-'0';// 遍历该数字对应的所有字母for(inti=0;i<let[num].size();i++){// 直接在传参时进行字符串拼接,隐式完成了回溯的回退过程dfs(digs,strr+let[num][i],u+1);}}};
http://www.cnnetsun.cn/news/1792603.html

相关文章:

  • GitHub 推送该用 SSH 还是 HTTPS?一篇讲透两种登录方式的区别
  • 余弦调度策略
  • [Linux][虚拟串口]x一个特殊的字节露
  • 打理多个微信不用慌,告别切换内耗很简单
  • 深度解码:华为IPD流程管理体系L1-L5最佳实践与数字化转型架构全景(PPT)
  • 【无标题】鑫博XB931M wifi模块
  • WPF新手村教程(七)—— 终章(MVVM架构初见杀)疾
  • 把握 AI 时代核心:孩子自主能力的脑能构建路径
  • 面向对象 方法重写 继承 多态 final 相关案例
  • Linux I/O 演进史:从管道到零拷贝,一篇串起个服务端核心原语纠
  • Kiro IDE remote extension host terminated unexpectedly #4231 官方状态:**未修复**(2026最新实测)
  • OpenClaw安装使用指南
  • 2026届最火的六大AI辅助论文网站解析与推荐
  • plog嵌入式C++日志库:轻量、零开销与跨平台实践
  • 嵌入式网络接口设计:硬件选型与软件优化实践
  • M5StickC-Plus嵌入式开发全指南:ESP32-PICO-D4硬件解析与低功耗实践
  • PCSEL(光子晶体表面发射激光器)技术首次展示
  • 基于组件化架构的Bilibili-Evolved性能优化实战:实现60fps流畅播放与40%内存占用降低
  • 阻抗匹配原理与工程实践全解析
  • Omdia:受社交视频广告推动,2030年全球在线视频和电视收入将超过1万亿美元
  • 2026年怎么安装OpenClaw?腾讯云5分钟喂奶级部署+大模型APIKey配置、Skill集成流程
  • ESP32轻量级Google OAuth 2.0 JWT签名库
  • .NET 诊断技巧 | 日志框架原理、手写日志框架学习咸
  • 微软发布的《生成式人工智能初学者.NET 第二版》课程辰
  • Keil MDK中printf输出配置与优化指南
  • 2025最权威的六大降重复率平台实测分析
  • 嵌入式电子罗盘算法库:FPU加速的磁力计校准与姿态解算
  • ABAQUS盾构隧道开挖模型Cae文件详解:一环七片结构,含螺栓配筋及毫米单位制应用
  • 向量索引预热耗时23秒、QPS跌至17?EF Core 10向量搜索成本失控的5个反直觉根源,现在修复还来得及
  • W25Qxx SPI Flash驱动设计与裸机/RTOS工程实践