【leetcode C++】电话号码的字母组合

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

17. 电话号码的字母组合

题目

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

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

【leetcode C++】电话号码的字母组合,leetcode

 

 

题目链接 

. - 力扣(LeetCode)

文字 和 画图 分析

这道题明显是需要互相匹配,如 字符串 “23”, 对应 “abc” 和 “def”。

【leetcode C++】电话号码的字母组合,leetcode

这个时候我们就想到跟循环有关,但是我们很难控制出 for循环的个数 ,所以最好的办法就是采用递归

参数我们需要:digits (含 2-9 的字符串),di(表示层数) ,

tmp (每一层对应的字符串),t (接收每一次递归结束时的字符串)

注意事项:

  1. tmp 不要传引用 ,便于递归结束时可以对应到上一层的字符串
  2. t 需要传引用 ,我们需要每一次递归结束都保留相应的字符串
  3. 递归尽量参数不要使用 +=,否则递归结束,回到上一层,参数存储的值不会变

举例(digits = "23"):

【leetcode C++】电话号码的字母组合,leetcode

递归顺序:

【leetcode C++】电话号码的字母组合,leetcode

【leetcode C++】电话号码的字母组合,leetcode

【leetcode C++】电话号码的字母组合,leetcode文章来源地址https://www.toymoban.com/news/detail-837938.html

代码 

class Solution 
{
private:
string letter[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public:
    void _letterCombinations(string& digits,string tmp,int di,vector<string>& t)
    {
        if(di == digits.size())
        {
            t.push_back(tmp);
            return;
        }
        int n = digits[di] - '0';
        string s = letter[n];
        for(auto i : s)
        {
            _letterCombinations(digits,tmp + i,di + 1,t);
        }
    }
    vector<string> letterCombinations(string digits) 
    {
        vector<string> t;
        if(digits.size() == 0)
        {
            return t;
        }
        _letterCombinations(digits,"",0, t);
        return t;
    }
};

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

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

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

相关文章

  • 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日
    浏览(43)
  • 17. 电话号码的字母组合

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

    2024年02月15日
    浏览(47)
  • 17. 电话号码的字母组合(回溯)

    从第一个数字开始遍历其对应的字母,将其加入StringBuffer中,继续深度优先搜索,当访问到最后一个数字的时候,将StringBuffer存储到ans中,然后回溯到下一个对应字母。 拓展: StringBuffer中的删除对应字符的方法是 deleteCharAt()

    2024年01月15日
    浏览(45)
  • 【算法Hot100系列】电话号码的字母组合

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月01日
    浏览(41)
  • 递归算法学习——电话号码的字母组成,括号生成,组合

    目录 一,电话号码的字母组合 1.题意 2.例子 3.题目接口  4.解题代码和思路 代码: 思路: 二,括号的生成 1.题意 2.例子 3.题目接口 四,解题代码和思路 1.先写代码: 2.思路 三,组合 1.题意 2.例子 3.题目接口 4.解题代码 1.题意 给定一个仅包含数字  2-9  的字符串,返回所有

    2024年02月10日
    浏览(70)
  • 代码随想录阅读笔记-回溯【电话号码的字母组合】

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

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

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

    2024年01月21日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包