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.

分析:暴力搜索所有结果。

代码如下:

 1 class Solution {
 2 public:
 3     const vector<string> keyboards{" ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
 4     vector<string> letterCombinations(string digits) {
 5         vector<string> res;
 6         string path;
 7         dfs(res,path,digits,0);
 8         return res;
 9     }
10     void dfs(vector<string> & res, string & path, string digits, int k){
11         if(digits.size() == k){
12             res.push_back(path);
13             return;
14         }
15         for(auto c: keyboards[digits[k]-'0']){
16             path.push_back(c);
17             dfs(res,path,digits,k+1);
18             path.pop_back();
19         }
20     }
21 };

 

posted on 2014-08-17 15:44  Ryan-Xing  阅读(151)  评论(0编辑  收藏  举报