|
1 |
| - |
2 | 1 | class Solution {
|
3 |
| -private: |
4 |
| - static const string keypad[8]; |
5 | 2 | public:
|
6 | 3 | vector<string> letterCombinations(string digits) {
|
7 |
| - // Start typing your C/C++ solution below |
8 |
| - // DO NOT write int main() function |
| 4 | + map<int, string> keypad; |
| 5 | + keypad[2] = string("abc"); |
| 6 | + keypad[3] = string("def"); |
| 7 | + keypad[4] = string("ghi"); |
| 8 | + keypad[5] = string("jkl"); |
| 9 | + keypad[6] = string("mno"); |
| 10 | + keypad[7] = string("pqrs"); |
| 11 | + keypad[8] = string("tuv"); |
| 12 | + keypad[9] = string("wxyz"); |
9 | 13 |
|
10 |
| - vector<string> all_letters; |
| 14 | + vector<string> result; |
11 | 15 | string letter;
|
12 |
| - |
13 |
| - if (digits.empty()) { |
14 |
| - all_letters.push_back(letter); |
15 |
| - return all_letters; |
16 |
| - } |
17 |
| - |
18 |
| - letterCombinationsHelper(digits, 0, letter, all_letters); |
| 16 | + dfs(result, letter, digits, 0, keypad); |
| 17 | + return result; |
19 | 18 | }
|
20 |
| - void letterCombinationsHelper(string& digits, int step, string& letter, vector<string>& all_letters) { |
21 |
| - if (step == digits.size()) { |
22 |
| - all_letters.push_back(letter); |
| 19 | + void dfs(vector<string>& result, string& letter, string& digits, int pos, map<int, string>& keypad) { |
| 20 | + if (pos == digits.size()) { |
| 21 | + result.push_back(letter); |
23 | 22 | return;
|
24 | 23 | }
|
25 |
| - int x = digits[step] - '2'; |
26 |
| - for (int i = 0; i < keypad[x].size(); i++) { |
27 |
| - letter += keypad[x][i]; |
28 |
| - letterCombinationsHelper(digits, step + 1, letter, all_letters); |
29 |
| - letter.erase(letter.size() - 1, 1); |
| 24 | + int x = digits[pos] - '0'; |
| 25 | + string s = keypad[x]; |
| 26 | + for (int i = 0; i < s.size(); i++) { |
| 27 | + letter.push_back(s[i]); |
| 28 | + dfs(result, letter, digits, pos + 1, keypad); |
| 29 | + letter.pop_back(); |
30 | 30 | }
|
31 | 31 | }
|
32 | 32 | };
|
33 |
| - |
34 |
| -const string Solution::keypad[8] = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; |
0 commit comments