Leetcode-Letter Combinations of a Phone Number

题目:

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.

 

采用dfs深度搜索.

 1 #include <iostream>
 2 #include <map>
 3 #include <vector>
 4 #include <string>
 5 
 6 class Solution{
 7 private:
 8        map<char,vector<char> > dict;
 9        vector<string> res;
10 public:
11          void createDict()
12        {
13             dict.clear();
14              dict['2'].push_back('a');
15             dict['2'].push_back('b');
16             dict['2'].push_back('c');
17             dict['3'].push_back('d');
18             dict['3'].push_back('e');
19             dict['3'].push_back('f');
20             dict['4'].push_back('g');
21             dict['4'].push_back('h');
22             dict['4'].push_back('i');
23             dict['5'].push_back('j');
24             dict['5'].push_back('k');
25             dict['5'].push_back('l');
26             dict['6'].push_back('m');
27             dict['6'].push_back('n');
28             dict['6'].push_back('o');
29             dict['7'].push_back('p');
30             dict['7'].push_back('q');
31             dict['7'].push_back('r');
32             dict['7'].push_back('s');
33             dict['8'].push_back('t');
34              dict['8'].push_back('u');
35              dict['8'].push_back('v');
36              dict['9'].push_back('w');
37             dict['9'].push_back('x');
38             dict['9'].push_back('y');
39             dict['9'].push_back('z');
40         }
41         
42         void dfs(int dep,int maxDep,string &s,string ans){
43               if(dep==maxDep){
44                   res.push_back(ans);
45                   return;
46               }
47               
48               for(int i=0;i<dict[s[dep]].size();i++){
49                   dfs(dep+1,maxDep,s,ans+dict[s[dep]][i]);
50               }
51         }
52     
53       vector<string> letterCombinations(string digits){
54              res.clear();
55              createDict();
56              dfs(0,digits.size(),digits,"");
57       }
58     
59 };

 

posted @ 2014-10-05 11:46  晓风_7  阅读(135)  评论(0编辑  收藏  举报