每日算法之十七:Letter Combinations of a Phone Number
来源:互联网 发布:手机测经纬度软件 编辑:程序博客网 时间:2024/06/10 17:09
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.
class Solution { //static declare and definition with local scope public: void letterCombinations_aux(int step, string& path, vector<string>& ans, const string& digits) { //pay attention to this kind of statement const static string strT[10] = {"","","abc","def","ghi","jkl","mno","qprs","tuv","wxyz"}; if(step == digits.size()) { ans.push_back(path); return; } for(int i = 0; i < strT[digits[step]-'0'].size(); ++i) { path.push_back(strT[digits[step]-'0'][i]); letterCombinations_aux(step+1, path, ans, digits); path.pop_back(); } } vector<string> letterCombinations(string digits) { // Start typing your C/C++ solution below // DO NOT write int main() function string path; vector<string> ans; int step = 0; letterCombinations_aux(step, path, ans, digits); return ans; } };
第二种:
class Solution {private: map<char, vector<char> > dict; vector<string> ret;public: void createDict() { dict.clear(); dict['2'].push_back('a'); dict['2'].push_back('b'); dict['2'].push_back('c'); dict['3'].push_back('d'); dict['3'].push_back('e'); dict['3'].push_back('f'); dict['4'].push_back('g'); dict['4'].push_back('h'); dict['4'].push_back('i'); dict['5'].push_back('j'); dict['5'].push_back('k'); dict['5'].push_back('l'); dict['6'].push_back('m'); dict['6'].push_back('n'); dict['6'].push_back('o'); dict['7'].push_back('p'); dict['7'].push_back('q'); dict['7'].push_back('r'); dict['7'].push_back('s'); dict['8'].push_back('t'); dict['8'].push_back('u'); dict['8'].push_back('v'); dict['9'].push_back('w'); dict['9'].push_back('x'); dict['9'].push_back('y'); dict['9'].push_back('z'); } void dfs(int dep, int maxDep, string &s, string ans) { if (dep == maxDep) { ret.push_back(ans); return; } for(int i = 0; i < dict[s[dep]].size(); i++) dfs(dep + 1, maxDep, s, ans + dict[s[dep]][i]); } vector<string> letterCombinations(string digits) { // Start typing your C/C++ solution below // DO NOT write int main() function ret.clear(); createDict(); dfs(0, digits.size(), digits, ""); return ret; }};
0 0
- 每日算法之十七:Letter Combinations of a Phone Number
- Algorithm之路十七:Letter Combinations of a Phone Number
- LeetCode算法题之Letter Combinations of a Phone Number
- 每日一道算法题——Letter Combinations of a Phone Number
- 【Leetcode】Letter Combinations of a Phone Number算法解析
- 17. Letter Combinations of a Phone Number-回溯算法
- 17. Letter Combinations of a Phone Number 回溯算法
- 算法系列——Letter Combinations of a Phone Number
- (算法分析Week10)Letter Combinations of a Phone Number[Medium]
- leetcode 算法 17. Letter Combinations of a Phone Number
- LeetCode 之 Letter Combinations of a Phone Number
- leetcode之Letter Combinations of a Phone Number
- leetcode之路017 Letter Combinations of a Phone Number
- LeetCode之Letter Combinations of a Phone Number
- leetcode之Letter Combinations of a Phone Number
- 【Leetcode】之Letter Combinations of a Phone Number
- LeetCode之17----Letter Combinations of a Phone Number
- LeetCode进阶之路(Letter Combinations of a Phone Number)
- s3c6410 DMA
- zoj3725s
- 复数
- 第12周项目1--长颈鹿类对动物类的继承(1)
- 如何把无线路由器变成无线交换机使用?
- 每日算法之十七:Letter Combinations of a Phone Number
- cocos2d-x 之闲扯UI制作
- 什么是.NET平台
- 最长单调递增子序列
- 链表逆序
- 开机grub resure问题解决
- Android实现计算器的两种方式
- 结构型模式专题总结
- UVa 11488 - Hyper Prefix Sets