leetcode 17 电话号码字母组合

这篇具有很好参考价值的文章主要介绍了leetcode 17 电话号码字母组合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

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

输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
示例 2:

输入:digits = “”
输出:[]
示例 3:

输入:digits = “2”
输出:[“a”,“b”,“c”]

提示

0 <= digits.length <= 4
digits[i] 是范围 [‘2’, ‘9’] 的一个数字。
leetcode 17 电话号码字母组合,# 我得leetcode之路,leetcode,深度优先,算法

概述

这是一道dfs的题目
首先为什么他是一道dfs的题目?
dfs是一个遍历的方式,该题就是按键映射的字母的排列组合,所以这道题就是一道dfs的题目
怎么处理dfs的题目?
对于dfs的题目处理方式:
1.写出终止条件
2.候选节点的筛选
3.回溯

代码

class Solution {
public:
    string temp;
    // 注意审题,前面两个用不到,所以置为空串
    vector<string> board = {"", "", "abc", "def", "ghi","jkl","mno","pqrs","tuv","wxyz"};
    // 用来存放结果的空串
    vector<string> ans;
    void dfs(int pos,string digits){
        //1. 终止条件
        if(pos==digits.size()){
            ans.push_back(temp);
            return;
        }
        // 候选节点的筛选
        // 表示键盘按到了第几个键
        int nums=digits[pos]-'0';
        for(int i=0;i<board[nums].size();i++){
            temp.push_back(board[nums][i]);
            dfs(pos+1,digits);
            temp.pop_back();//回溯
        }
    }

    vector<string> letterCombinations(string digits) {
        if(digits.size()==0){
            return {};
        }
        dfs(0,digits);
        return ans;
    }
};

代码解释

参数 digits 表示输入的数字序列。

代码首先处理边界条件,即如果输入的数字序列长度为 0,直接返回一个空的向量。

然后调用 dfs 函数来进行深度优先遍历,获取结果。

在 dfs 函数中,采用递归的方式实现深度优先遍历。该函数接受两个参数,一个是要处理的输入数字序列,另一个是当前的层数。在初始调用时,层数为 0,可以理解为第一层,即选取第一个数字对应的字符;第二层则是选取第二个数字对应的字符,依此类推。

在函数内部,递归的终止条件是根据数字序列的长度来确定的,即 pos == digits.size(),表示遍历结束。

每次递归调用时,函数会选取当前位置的数字,并遍历该数字对应的字符集合,将选取的字符与后续字符进行组合。然后,将组合结果与当前字符拼接,形成新的组合。这样,通过递归调用和不断拼接字符,就可以得到所有可能的组合。

在递归结束后,为了避免 temp 影响到后续的遍历,需要进行回溯操作,即将最后一个字符从 temp 中移除。

最后,通过使用 return 关键字来结束递归。

希望以上总结对你有帮助,如果有任何进一步的问题,请随时提问。

leetcode 17 电话号码字母组合,# 我得leetcode之路,leetcode,深度优先,算法文章来源地址https://www.toymoban.com/news/detail-801354.html

到了这里,关于leetcode 17 电话号码字母组合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode:电话号码的字母组合(详解)

    给定一个仅包含数字  2-9  的字符串,返回所有它能表示的字母组合。答案可以按  任意顺序  返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 示例 2: 示例 3: 提示: 0 = digits.length = 4 digits[i]  是范围  [\\\'2\\\', \\\'9\\\']  的一个数字。  

    2024年02月11日
    浏览(70)
  • Day 25 | 回溯 216.组合总和III 、17.电话号码的字母组合

    题目 文章讲解 视频讲解 思路: 以回溯函数做对称,上面做了什么操作,下面也是 题目 文章讲解 视频讲解 思路:思路上和组合很像,不同的是对字符串进行操作 还得再想想

    2024年01月21日
    浏览(44)
  • 【leetcode C++】电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。     . - 力扣(LeetCode) 这道题明显是需要互相匹配,如 字符串 “23”, 对应 “abc” 和 “def”。 这个

    2024年03月10日
    浏览(47)
  • 17.电话号码的字母组合(深度递归遍历解决经典老题)

    C++深度递归遍历解决\\\"电话号码的字母组合问题\\\",本题考察的比较全面,考察到 vector的使用,深度遍历以及递归的熟练度 ,希望能对铁子们有所帮助 链接:https://leetcode.cn/problems/letter-combinations-of-a-phone-number/ 如上图所示,以\\\"256\\\"为例,我们将三个字符串各个字符的排列组合展

    2023年04月13日
    浏览(46)
  • Day28 17电话号码的字母组合 39组合求和 40组合求和II

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。          因为输入的数字的数量是不确定的,所以for循环的次数也是不确定的,这里就需要用到回溯的方法了。          一般回

    2024年01月16日
    浏览(50)
  • 代码随想录22| 216.组合总和III, 17.电话号码的字母组合

    题目链接/文章讲解:链接地址 视频讲解:链接地址 代码思路:回溯三部曲: 1.确定函数参数:n,k,sum,startIndex; 2.结束条件,path == k,并且如果sum==n 结束递归 3.递归回溯逻辑。 题目链接/文章讲解:链接地址 视频讲解:链接地址 代码思路:传入参数:输入的数字,第几个数字的

    2024年02月11日
    浏览(56)
  • Leetcode17电话号码的组合

    思路:用字典的形式保存号码的映射,实际组合是前一个数字串的组合加上后面一个数字的所有可能组合

    2024年02月10日
    浏览(48)
  • leetcode刷题电话号码的字母组合(人工智能解答版本)

    一开始想用暴力破解的方法来进行解题,就是循环。但是想到随着数字的增多,循环行不通。想到最近使用的一个人工智能助手,于是我把题目发送给了它,直接给出了递归的解决方法。递归分为两个条件,一个就是当列表中的元素的数目达到了数字的个数,那么将列表中的

    2024年02月22日
    浏览(47)
  • 稀碎从零算法笔记Day45-LeetCode:电话号码的字母组合

    题型:映射、回溯算法、递归 链接:17. 电话号码的字母组合 - 力扣(LeetCode) 来源:LeetCode 给定一个仅包含数字  2-9  的字符串,返回所有它能表示的字母组合。答案可以按  任意顺序  返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例

    2024年04月11日
    浏览(41)
  • 电话号码的字母组合-算法

    按电话上数字与字母的对应关系,如2={a,b,c},3={d,e,f}等,给定一串数字如267,则求出abc,mno,qprs的所有组合,如amq,amp...cor,cos等 遍历都可以用回溯的方式尝试解决,每次遍历结束后,将上一层元素删除,满足长度,则加入到结果中      

    2024年01月22日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包