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.
Although the above answer is in lexicographical order, your answer could be in any order you want.
[解题思路]
经典递归题。
[Code]
1: vector<string> letterCombinations(string digits) {
2: // Start typing your C/C++ solution below
3: // DO NOT write int main() function
4: string trans[] = {"", " ", "abc", "def", "ghi", "jkl",
5: "mno", "pqrs", "tuv", "wxyz"};
6: vector<string> set;
7: string seq;
8: Generater(trans, digits, 0, seq, set);
9: return set;
10: }
11: void Generater(string trans[], string& digits,
12: int deep, string& result, vector<string>& set)
13: {
14: if(deep == digits.size())
15: {
16: set.push_back(result);
17: return;
18: }
19: int curDig = digits[deep] - 48;
20: for(int i =0; i < trans[curDig].size(); i++)
21: {
22: result.push_back(trans[curDig][i]);
23: Generater(trans, digits, deep+1, result, set);
24: result.resize(result.size() -1);
25: }
26: }
[注意]
1. Line 19。ACSII码转int要减去48.
电话号码字母组合
本文介绍了一种使用递归算法来解决电话号码对应的字母组合问题的方法。通过将数字映射为字母,实现所有可能的组合输出。
557

被折叠的 条评论
为什么被折叠?



