leetcode解题报告17. Letter Combinations of a Phone Number
2017-04-23 00:00
531 查看
leetcode解题报告17. Letter Combinations of a Phone Number
题目地址难度是easy
题目描述
在手机9个数字格里,其实一个数字对应几个字母的。其对应关系如下(为了方便,直接代码形式给出,比较容易理解看懂)my_map['0'] = ' '; my_map['2'] = "abc"; my_map['3'] = "def"; my_map['4'] = "ghi"; my_map['5'] = "jkl"; my_map['6'] = "mno"; my_map['7'] = "pqrs"; my_map['8'] = "tuv"; my_map['9'] = "wxyz";
现在是输入一个数字组成的字符串,找出所有对应的可能的字母字符串。
例子如下:
Input:Digit string "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
我的思路
是一个模拟类的题目,直接枚举列出来就行了。问题是如何枚举。直接尝试用for循环会发现这很不适合这个问题。可以发现这其实类似与深搜的过程,而for循环更适合广搜的过程。对于深搜的过程,可以考虑用递归的方式。我的代码
#include <map> using namespace std; class Solution { public: map<char, string> my_map; Solution(){ my_map['0'] = ' '; my_map['2'] = "abc"; my_map['3'] = "def"; my_map['4'] = "ghi"; 4000 my_map['5'] = "jkl"; my_map['6'] = "mno"; my_map['7'] = "pqrs"; my_map['8'] = "tuv"; my_map['9'] = "wxyz"; } void func(string& s, int index, vector<string>& result, string cur) { if (index == s.size()-1) { for (int i = 0; i < my_map[s[index]].size(); i++) { result.push_back(cur+my_map[s[index]][i]); } return; } for (int i = 0; i < my_map[s[index]].size(); i++) { func(s, index+1, result, cur+my_map[s[index]][i]); } } vector<string> letterCombinations(string digits) { vector<string> result; if (digits.size() == 0) { return result; } func(digits, 0, result, ""); return result; } };
阅读官方题解
没有官方题解,思路差不多。其实用for循环还是比较方便地处理的,沿这数字字符串走,下一步的结果就是当前结果集和下一个数字字符对应的字符字符集的一个笛卡尔集。思想核心总结
注意分析问题,深搜的过程可以考虑用递归的方式。相关文章推荐
- [leetcode] 17. Letter Combinations of a Phone Number 解题报告
- [Leetcode] 17. Letter Combinations of a Phone Number 解题报告
- 【LeetCode】17. Letter Combinations of a Phone Number 解题报告
- 《LeetBook》leetcode题解(17):Letter Combinations of a Phone Number[M]
- (Leetcode)17. Letter Combinations of a Phone Number——使用LinkedList
- leetCode解题报告5道题(九)
- LeetCode17. Letter Combinations of a Phone Number可能是世界上最简明的解法了
- 17. Letter Combinations of a Phone Number
- python写算法题:leetcode: 17. Letter Combinations of a Phone Number
- 17. Letter Combinations of a Phone Number
- LeetCode 17. Letter Combinations of a Phone Number--输入数字,每个数字对应手机键盘的字符,输出组合的字符串
- [LeetCode] Letter Combinations of a Phone Number 解题报告
- leetcode-17. Letter Combinations of a Phone Number
- leetcode - 17.Letter Combinations of a Phone Number
- 17. Letter Combinations of a Phone Number
- Algorithms—17.Letter Combinations of a Phone Number
- 17. Letter Combinations of a Phone Number
- [LeetCode]17. Letter Combinations of a Phone Number(自学留存)
- leetcode解题报告:213. House Robber II
- LeetCode 17. Letter Combinations of a Phone Number高效解法