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

LeetCode第17题解析 给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 解法一:用回溯的方法,DFS。 class Solution { public: //先建立一个map,键为char,值... 阅读详情

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

题目描述

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

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

在这里插入图片描述
示例:

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

说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

解题思路

回溯法

算法框架:递归出口设计、目标条件的选择、递归、状态重置。

按照上面的框架代码如下

class Solution {
public:
    vector<string> letterCombinations(string digits) {
        vector<string> res;     // 存放所有的组合
        string track="";        // 存放字符的组合
        digitsToStr = {{'2',"abc"},{'3',"def"},{'4',"ghi"},{'5',"jkl"},{'6',"mno"},{'7',"pqrs"},{'8',"tuv"},{'9',"wxyz"}};      // 初始化,每个数字对应的字符串
        backTrack(res, digits, track, 0);
        return res;
    }
    void backTrack(vector<string>& res, string digits, string track, int index){
        // 步骤1:递归出口(当满足track的长度和数组的长度一样长的时候,直接返回,一个数字对应一个字符)
        if(track.size() == digits.size()){
            if(track.size() == 0){  
                return;   // 这里是digits为空的时候,直接返回,否则返回res中会有默认初始化的 "" 字符串
            }
            res.push_back(track);
            return ;
        }
        // 步骤二:目标路径的选择,不断的向track里添加字符
        for(int i=index; i<digits.size(); i++){
            string temp = digitsToStr[digits[i]];
            for(int j=0; j<temp.size(); j++){
                track.insert(track.begin()+track.size(), temp[j]);  // track更新
                backTrack(res, digits, track, i+1);      // 步骤三:递归
                track.erase(track.begin()+track.size()-1); // 步骤四:状态重置
            }
        }
    }
    unordered_map<char, string> digitsToStr;  // 创建一个public遍历,供类中的成员方法使用
};

欢迎大家关注我的个人公众号,同样的也是和该博客账号一样,专注分享技术问题,我们一起学习进步
在这里插入图片描述

Java实现 LeetCode 17 电话号码的字母组合 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:“23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/p... 阅读详情

相关推荐

【中等】力扣算法题解析LeetCode17:电话号码的字母组合

该文介绍了一种采用回溯法和字符数组优化的算法,用于解决电话号码字母组合问题。通过预处理数字-字母映射关系,预分配字符数组减少内存开销,并在回溯过程中直接修改数组元素来避免字符串拼接操作。算法亮点包括零临时字符串生成、内存预分配和静态映射表共享。Java实现展示了从输入处理到回溯递归的完整流程,以输入"23"为例详细说明了执行过程。

ylumwd的博客 744

每日一题-13-电话号码的字母组合

每日一题-13-电话号码的字母组合 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 示例 2: 输入:digits = "" 输出:[] 示例 3: 输入:digits = "2" 输出:["a","b","c"] 提

wen的博客 360

运动目标成像必学:5分钟搞懂keystone变换原理与避坑指南

本文深入浅出地解析了雷达信号处理中的Keystone变换原理,它是解决运动目标距离徙动问题的关键技术。文章通过直观比喻和简化公式,阐述了该变换如何通过变量代换实现距离与慢时间的解耦合,将倾斜轨迹“掰直”,从而提升成像与检测性能。同时,文中重点指出了实际应用中关于大速度场景、插值误差、多目标处理及高阶运动补偿等关键避坑点,为工程实践提供了宝贵指南。

ios99的博客 403

图解LeetCode17:电话号码的组合(回溯算法解题)

LeetCode17:电话号码的组合 给定一个仅包含数字2-9的字符串,返回所有它能够表示的字母组合。答案可以按任意顺序返回 给出数字到字母的映射如电话按键一样。注意1不对应任何字母。 示例: 输入:"23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 输入:"" 输出:[] 输入:"2" 输出:["a","b","c"] 思路 这个题目就是类似于给出所有的排列组合,而且是有顺序的排列组合,这就比如走路线问题。假如你回家坐公交一样,在开始可以做1

weixin_46429290的博客 1592

Python+whisper/vosk实现语音识别

Whisper 是一个由 OpenAI 开发的人工智能语音识别模型,它能够将语音转换为文本。Whisper 模型特别之处在于它的设计目标是能够理解和转录多种语言的语音,包括但不限于英语。Whisper 模型在训练时使用了大量不同语言的语音数据,这使得它具有很好的跨语言能力。Vosk 是一个开源的语音识别库,它可以在离线环境下工作,不依赖于任何外部服务。Vosk 基于Kaldi语音识别框架,支持多种语言,包括中文。Vosk提供了多种预训练模型,可以根据需求选择适合的模型进行语音识别。

weixin_44458771的博客 5937

从MC到DC:三维重建算法的核心原理与实战对比

本文深入对比了三维重建领域两大经典算法Marching Cubes(MC)与Dual Contouring(DC)的核心原理与实战表现。MC算法原理直观、实现简单,但存在特征丢失和二义性问题;DC算法通过求解二次误差函数(QEF)和利用法向量信息,能更好地保留模型的尖锐特征,但计算更复杂。文章结合医学影像处理实例,为开发者根据速度、精度和特征保真度需求选择合适算法提供了清晰指南。

weixin_29251131的博客 1031

LeetCode 第17题

在学习了他人的思路后我使用了下面的算法,是一个经典的递归(深度优先搜索,DFS)实现,用于生成电话号码的字母组合。每个数字按电话键盘的映射对应多个字母,代码通过递归逐步构建每个可能的组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。运行时间可以达到最短,但是所需要的内存很大。我最开始是使用了一个回溯函数来解题。运行时间稍长但是需要内存极少。

m0_61862494的博客 621

从仿真曲线到电路状态:用Cadence Virtuoso深度剖析CS放大器各个工作区(以电流源负载为例)

本文通过Cadence Virtuoso平台,深入剖析电流源负载CS放大器在不同工作区的表现,从仿真曲线解读电路状态。详细介绍了如何通过Vout-Vin直流扫描曲线判断MOS管工作区域(截止区、饱和区、线性区),并验证理论与仿真的一致性,提升模拟IC设计调试效率。

weixin_30940783的博客 442

leetCode 17.电话号码的字母组合 + 回溯算法 + 图解 + 笔记

LeetCode:17.电话号码的字母组合_哔哩哔哩_bilibili。的字符串,返回所有它能表示的字母组合。代码随想录 (programmercarl.com)解决思路:1.创建字符集(使数字和字母集做映射)注意 1 不对应任何字母。给出数字到字母的映射如下(与。循环的问题,举个栗子:输入。1).确定回溯函数参数。3).确定单层遍历逻辑。

呵呵哒!的博客 2040

OpenStack [ compute_id ] 设计上的小缺陷

而 nova 代码中硬编码(或默认配置)将 compute_id 放在 site-packages 目录,属于 设计上的小缺陷—— 把 “库安装目录” 和 “运行时数据目录” 混在一起了,才导致需要临时调整这个目录的权限。# 配置项说明:node_identity_file 是 nova 用于指定节点标识文件路径的官方配置项,优先级高于代码中的默认路径。自定义 compute_id 路径,指向 /var/lib/nova/ 目录下的 compute_id 文件;

求知若渴,虚心若愚。 491

Unity中的Timeline

Timeline与动画系统类似,但是它可以针对多个物体做出一系列多个动画,它可以创建多个轨道,对象激活与隐藏轨道,动画轨道,声音轨道等。每个轨道都可以单独编辑,轨道内的不同资源可以排列并且融合

L的博客 1万+

17. 电话号码的字母组合(力扣LeetCode)

函数backstracking是核心,它会递归地探索所有可能的字母组合,每次递归调用都会向一个组合中添加一个字母,直到得到一个完整的字母组合然后将其添加到结果集中。函数中使用了path变量来存储当前的字母组合状态,并在每次递归返回之前进行回溯,以便尝试下一个可能的字母组合。变量a是一个映射数组,它将数字映射到对应的所有可能字母上。输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]给出数字到字母的映射如下(与电话按键相同)。输出:[“a”,“b”,“c”]

m0_73841621的博客 531

学Simulink——基于故障诊断与容错控制的场景实例:并网逆变器在短路故障下的动态响应及恢复策略

本文详细介绍了使用Simulink进行并网逆变器短路故障模拟与保护策略设计的方法。通过构建高精度逆变器模型,模拟IGBT击穿和桥臂直通故障,分析动态响应特性。重点设计了基于Stateflow的微秒级快速保护逻辑,包括过流检测、PWM闭锁和故障报警。同时提出完整的恢复策略流程,涵盖放电、去磁、自检和软启动等关键步骤。仿真结果表明,该方法能在200μs内有效限制短路电流,保护器件安全,并实现系统可靠恢复。文章还探讨了硬件保护协同、多级保护和预测保护等高级策略,为新能源系统的安全运行提供了重要参考。

amy_mhd的博客 143

力扣:17. 电话号码的字母组合

题目中的“23”,对应为“abc”,“def”,按下2和3时,能出现的选择,只有“a”,“b”,"c"和“d”,“e”,“f”,然而按下第一个数字2,“a”,“b”,"c"不能互相排列,再次按下数字3,“d”,“e”,“f”可以和前面的“a”,“b”,"c"互相组合,组合的可能就为[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]输出:[“a”,“b”,“c”]

yuanshenzhilu的博客 730

车载 ECU 中的 Safety Linux 详解

车载 ECU 中的 Safety Linux 详解

天赐好车的博客 307

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【力扣LeetCode】17 电话号码的字母组合

题目描述(难度中) 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:“23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 链接 https:/...

Jiewang的博客 382

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

力扣——17电话号码的字母组合

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。17. 电话号码的字母组合 - 力扣(LeetCode)的字符串,返回所有它能表示的字母组合。

2301_77433167的博客 1105

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

17. 电话号码的字母组合【 力扣(LeetCode) 】

题目要求根据给定的数字字符串(2-9),返回所有可能的字母组合,类似于手机按键的字母映射。解题思路采用回溯法,通过深度优先搜索(DFS)遍历每个数字对应的所有字母,递归生成所有可能的组合。具体步骤如下:首先建立数字到字母的映射关系,然后递归遍历每个数字对应的字母,当遍历到最后一个数字时,将当前组合存入结果集中。时间复杂度为 $O(4^n)$(最坏情况下每层遍历4个字母),空间复杂度为 $O(n)$(递归栈深度)。

yyh520025的博客 1169

《LeetCode力扣练习》第17题 电话号码的字母组合 Java

《LeetCode力扣练习》第17题 电话号码的字母组合 Java 一、资源 题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = “23” 输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”] 示例 2: 输入:digits = “” 输出:[] 示例 3: 输入:digits = “2” 输出

XRT_knives的博客 330

java电话号码的字母组合(力扣Leetcode17)

这是一个典型的回溯算法问题。我们需要根据数字到字母的映射,将给定的数字字符串转换为所有可能的字母组合。输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。通过回溯算法,我们可以找出给定数字字符串能表示的所有字母组合。输入:digits = “23”输出:[“a”,“b”,“c”]输入:digits = “2”输入:digits = “”

m0_73065928的博客 1615

LeetCode(力扣)17. 电话号码的字母组合Python

【代码】LeetCode(力扣)17. 电话号码的字母组合Python。

qq_44953660的博客 321

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

Leetcode 17. 电话号码的字母组合1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/   本质上就是一个深搜问题。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace

珍惜 8906

Leetcode17 电话号码的字母组合

Leetcode17 电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 解题思路 首先使用哈希表存储每个数字对应的所有可能的字母,然后进行回溯操作。 回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是

weixin_41908867的博客 293

LeetCode 热题 第17题 电话号码的字母组合

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

uifmlj的博客 1471

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

题目要求根据电话号码数字(2-9)生成所有可能的字母组合。采用回溯算法,通过递归枚举每个数字对应的字母,逐步构建组合。时间复杂度为O(4^n),空间复杂度O(n)。关键步骤包括:数字-字母映射、递归回溯生成组合、处理边界情况(如空输入)。示例输入"23"输出["ad","ae","af","bd","be","bf","cd","ce&qu

qq_32019341的博客 1597

LeetCode17:电话号码的字母组合(C++)

力扣刷题:电话号码的字母组合 加粗样式 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示

季风的博客 526
上一篇: leetcode 22.括号生成
下一篇: leetcode 39. 组合总和
黑暗主宰
博客等级 码龄9年 72粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值