[LeetCode 题解]: LetterCombinations
Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
题解: 递归。首先将输入字符串解析成数字集合,记录字符串大小为Len。
生成的字符串长度依旧为Len。从首位开始判断该位可以填充的字符。
注意:本题首先需要对手机键盘的字符进行映射,作为辅助。
 class Solution {
 public:
     char vi[][];
     vector<string > out;
     int length;
     void getVi()
     {
         int i,j;
         for(i=;i<=;i++)
             for(j=;j<;j++)
                 vi[i][j]=;
         for(i=;i<=;i++)
         {
             for(j=;j<;j++)
             {
                 vi[i][j]= 'a'+ *(i-)+j;
             }
         }
         vi[][]=' ';
         vi[][]='s';
         for(i=;i<=;i++)
         {
             for(j=;j<;j++)
             {
                 vi[i][j]= 'b' + *(i-)+j;
             }
         }
         vi[][]='z';
     }
     void DFS(int len,string digits, string c)
     {
         if(len==length)
         {
             out.push_back(c);
             return ;
         }
         int count = digits[len]-'';
         for(int i=;i<;i++)
         {
            if(vi[count][i]!=)
                DFS(len+,digits,c+vi[count][i]);
         }
     }
     vector<string> letterCombinations(string digits) {
         out.clear();
         length = digits.size();
         if(length==)
         {
             out.push_back("");
             return out;
         }
         if(digits.find('')!=string::npos) return out;
         getVi();
         DFS(,digits,"");
         return out;
     }
 };
转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!
[LeetCode 题解]: LetterCombinations的更多相关文章
- 【LeetCode题解】二叉树的遍历
		我准备开始一个新系列[LeetCode题解],用来记录刷LeetCode题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有 ... 
- leetcode题解-122买卖股票的最佳时期
		题目 leetcode题解-122.买卖股票的最佳时机:https://www.yanbinghu.com/2019/03/14/30893.html 题目详情 给定一个数组,它的第 i 个元素是一支 ... 
- 【LeetCode题解】3_无重复字符的最长子串(Longest-Substring-Without-Repeating-Characters)
		目录 描述 解法一:暴力枚举法(Time Limit Exceeded) 思路 Java 实现 Python 实现 复杂度分析 解法二:滑动窗口(双指针) 思路 Java 实现 Python 实现 复 ... 
- 【LeetCode题解】225_用队列实现栈(Implement-Stack-using-Queues)
		目录 描述 解法一:双队列,入快出慢 思路 入栈(push) 出栈(pop) 查看栈顶元素(peek) 是否为空(empty) Java 实现 Python 实现 解法二:双队列,入慢出快 思路 入栈 ... 
- 【LeetCode题解】232_用栈实现队列(Implement-Queue-using-Stacks)
		目录 描述 解法一:在一个栈中维持所有元素的出队顺序 思路 入队(push) 出队(pop) 查看队首(peek) 是否为空(empty) Java 实现 Python 实现 解法二:一个栈入,一个栈 ... 
- 【LeetCode题解】844_比较含退格的字符串(Backspace-String-Compare)
		目录 描述 解法一:字符串比较 思路 Java 实现 Python 实现 复杂度分析 解法二:双指针(推荐) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以 ... 
- 【LeetCode题解】25_k个一组翻转链表(Reverse-Nodes-in-k-Group)
		目录 描述 解法一:迭代 思路 Java 实现 Python 实现 复杂度分析 解法二:递归(不满足空间复杂度) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记 ... 
- 【LeetCode题解】24_两两交换链表中的节点(Swap-Nodes-in-Pairs)
		目录 描述 解法一:迭代 思路 Java 实现 Python 实现 复杂度分析 解法二:递归(不满足空间复杂度要求) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解 ... 
- 【LeetCode题解】347_前K个高频元素(Top-K-Frequent-Elements)
		目录 描述 解法一:排序算法(不满足时间复杂度要求) Java 实现 Python 实现 复杂度分析 解法二:最小堆 思路 Java 实现 Python 实现 复杂度分析 解法三:桶排序(bucket ... 
随机推荐
- 前端基础——jQuery
			一 jQuery 1 简介 jQuery是一个“写得更少,但做得更多”的轻量级JavaScript库.jQuery极大地简化了JavaScript编程. 它是轻量级的js库(压缩后只有21k) ,这是 ... 
- ie6绝对定位的块会被select元素遮挡的解决方案
			RT(已无力吐槽ie),解决方法是:定义一个iframe,与想要显示的绝对定位的块设置为同一大小.放在同一个位置上.我的网页里绝对定位的元素是会随着鼠标移动显示和隐藏的,于是这个frame也要跟着显示 ... 
- neovim在win10下安装配置
			安装 github安装包地址 在Windows的Pre-built archives下 点击nvim-win64.zip,下载. 解压安装包,放入适合的文件中,比如 D:\Editor中. 双击 nv ... 
- linux条件变量
			条件变量用于线程之间的通信,和互斥锁一起使用.条件变量用于及时通知等待的线程条件的变化,使线程不至于错过变化. 考虑下面的情况,有AB两个线程对index这个全局变量进行++,一个线程C用于判断,in ... 
- ArcGIS 二次开发增加工具栏按钮时,给按钮图标设置失败
			在类的构造函数中通过下面的代码获得的bitmap为null: string bitmapResourceName = GetType().Name + ".bmp"; base.m ... 
- 【Consul】Consul实践指导-配置文件
			Agent有各种各样的配置选项,这些配置选项可以通过命令行参数的方式设定,也可用通过配置文件的方式设定--所有的配置选项都是可选的,当然也是有默认值的. 当加载配置选项时,consul是按照词典顺序从 ... 
- <a>标签中的href="javascript:;"就是去掉a标签的默认行为
			<a>标签中的href="javascript:;"是什么意思? 例子:<a href="javascript:;">我的大学</ ... 
- DRBD 数据镜像软件介绍
			简介: DRBD (Distributed Replicated Block Device) 分布式块设备复制,是一种基于软件.网络的块复制存储解决方案.主要用于对服务器之间的磁盘.分区.逻辑卷等进行 ... 
- ubuntu系统中出现mysql数据库无法启动报错2002该怎么处理,具体报错信息如正文所示
			python@ubuntu:~$ mysql -uroot -pmysqlmysql: [Warning] Using a password on the command line interface ... 
- 前端开发之JavaScript基础篇三
			主要内容: 1.创建对象的几种方式 2.JavaScript内置对象 3.JavaScript错误--Throw.Try 和 Catch 4.JavaScript 表单验证 一.创建对象的几种方式 1 ... 
