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

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

示例:

  1. 输入:""
  2. 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
  3. 说明:
  4. 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

【思路】这是一个回溯问题的常规模板,我们首先思考回溯的退出条件:我们搜索出来的tmp_res的大小与digits数组大小相同时退出,由于我们每个回溯函数都共用了tmp_res这个变量,因此在函数调用结束后需要恢复为原来的状态,即:
tmp_res += i
backtrace(……)
tmp_res.pop_back()
其中在回溯函数中有两个参数是变化的,一个是搜索出来的字符串,另一个是digits的索引,因为我们是根据digits的数值来选择添加那些字母!!!

  1. class Solution {
  2. public:
  3. void backtrace(vector<string>& res, string tmp_res, string digits, int idx){ // res为引用形式
  4. if(tmp_res.length() == digits.length()){
  5. res.push_back(tmp_res);
  6. return;
  7. }
  8. string str = table[digits[idx]];
  9. for(auto i: str){
  10. tmp_res += i;
  11. backtrace(res, tmp_res, digits, idx+);
  12. tmp_res.pop_back();
  13. }
  14. }
  15.  
  16. vector<string> letterCombinations(string digits) {
  17.  
  18. vector<string> res;
  19. if(digits == "") return res;
  20. backtrace(res, "", digits, );
  21. return res;
  22. }
  23. private:
  24. unordered_map<char, string> table{{'', " "}, {'',"*"}, {'', "abc"},
  25. {'',"def"}, {'',"ghi"}, {'',"jkl"},
  26. {'',"mno"}, {'',"pqrs"},{'',"tuv"},
  27. {'',"wxyz"}};
  28. };

【LeetCode】电话号码的字母组合的更多相关文章

  1. [LeetCode] Letter Combinations of a Phone Number 电话号码的字母组合

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  2. Leetcode之回溯法专题-17. 电话号码的字母组合(Letter Combinations of a Phone Number)

    [Leetcode]17. 电话号码的字母组合(Letter Combinations of a Phone Number) 题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组 ...

  3. [LeetCode] 17. Letter Combinations of a Phone Number 电话号码的字母组合

    Given a string containing digits from 2-9inclusive, return all possible letter combinations that the ...

  4. Java实现 LeetCode 17 电话号码的字母组合

    17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23& ...

  5. LeetCode(17):电话号码的字母组合

    Medium! 题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23& ...

  6. lintcode 中等题:Letter Combinations of a Phone Number 电话号码的字母组合

    题目 电话号码的字母组合 给一个数字字符串,每个数字代表一个字母,请返回其所有可能的字母组合. 下图的手机按键图,就表示了每个数字可以代表的字母. 样例 给定 "23" 返回 [& ...

  7. Leetcode13. 罗马数字转整数Leetcode14. 最长公共前缀Leetcode15. 三数之和Leetcode16. 最接近的三数之和Leetcode17. 电话号码的字母组合

    > 简洁易懂讲清原理,讲不清你来打我~ 输入字符串,输出对应整数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/63802fda72be45eba98d9e4 ...

  8. 【LeetCode】17. Letter Combinations of a Phone Number 电话号码的字母组合

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:电话号码, 字母组合,回溯法,题解,leetcode, ...

  9. leetcode(js)算法之17电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母 示例: 输入:"23" 输出:[" ...

  10. [LeetCode] 17. 电话号码的字母组合 ☆☆☆(回溯) ###

    描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23"输出:[&q ...

随机推荐

  1. SSH框架搭建 笔记 (含spring注解驱动)

    分类: web 开发2014-04-27 12:33 354人阅读 评论(0) 收藏 举报 框架springinterface注解 好久没有搭建框架了,今天整理下以前的知识,整合下SSH,没想到手生了 ...

  2. 【Unity】双击物体

    using UnityEngine; using System.Collections; using System; public class Click_yushe : MonoBehaviour ...

  3. 十 Servlet

    5 web资源: 在http协议当中,规定了请求和响应双方,客户端和服务器.与web相关的资源. 静态资源:       html.css.css动态资源:           Servlet/jsp ...

  4. HTML<a>标签作为锚链接

    1. 什么是锚链接? <a></a>标签主要作为超链接和锚链接使用.超链接主要指不同html页面之间的跳转,而锚链接指的是同一页面之间的跳转. 锚链接的两种效果: 在当前页面中 ...

  5. Linux-hosts

    Linux-hosts hosts文件 /etc/hosts OS hosts (path) 使其生效,命令行执行 Windows (C:\Windows\System32\drivers\etc\h ...

  6. R语言 几个易错的地方

    1.列表与向量 定义一个向量,然后向内添加元素,得到一个长向量列表: > a = c() #定义一向量 > for (i in 1:5) + a = c(a,i) > a [1] 1 ...

  7. java#lambda相关之方法引用

    lambda在java中通常是()->{}这样的方式,来书写的.通常的lambda是四大函数型接口的一个“实现”. 如果我们要写的lambda已经有现成的实现了,那么就可以把现成的实现拿过来使用 ...

  8. MinGW 安装与简单实例

    MinGW的下载 链接: https://pan.baidu.com/s/1JiZoyFHUWoeaxCQcUXCKgg 密码: myh3 MinGW的安装 基本上都是按提示的点击下一步操作 接下来修 ...

  9. yum 安装 tomcat

    前言对于一个新安装的 centos 系统来说,是没有 tomcat 服务器的.用下面的命令可以查看 tomcat 服务的状态. systemctl status tomcat.service//或者 ...

  10. Xmanager 实现图形化安装CentOS7上的软件

    Xmanager 是个很不错的工具,集成Xshell,Xftp,Xstart,Xbrowser等常用的远程工具. 当前需求为:有个软件,哑安装(静默安装)方式,在安装时会遇到配置文件加载不全,安装成功 ...