|
1 | 1 | // dfs.cpp |
2 | 2 | class Solution { |
| 3 | + static vector<string> letter; |
| 4 | + void dfs(vector<string>& letter, vector<string>& res, const string& digits, |
| 5 | + string cur, int i) { |
| 6 | + if (i == digits.size()) { |
| 7 | + res.push_back(cur); |
| 8 | + return; |
| 9 | + } |
| 10 | + for (int j = 0; j < letter[digits[i] - '0'].size(); ++j) |
| 11 | + dfs(letter, res, digits, cur + letter[digits[i] - '0'][j], i + 1); |
| 12 | + } |
| 13 | + |
3 | 14 | public: |
4 | | - vector<string> letterCombinations(string digits) { |
5 | | - vector<string> letter = {"", "", "abc", "def", "ghi", |
6 | | - "jkl", "mno", "pqrs", "tuv", "wxyz"}; |
7 | | - vector<string> res; |
8 | | - if (digits.size() == 0) |
9 | | - return res; |
10 | | - dfs(letter, res, digits, "", 0); |
11 | | - return res; |
12 | | - } |
13 | | - void dfs(vector<string> &letter, vector<string> &res, const string &digits, |
14 | | - string cur, int i) { |
15 | | - if (i == digits.size()) { |
16 | | - res.push_back(cur); |
17 | | - return; |
| 15 | + vector<string> letterCombinations(string digits) { |
| 16 | + vector<string> res; |
| 17 | + if (digits.size() == 0) |
| 18 | + return res; |
| 19 | + dfs(letter, res, digits, "", 0); |
| 20 | + return res; |
18 | 21 | } |
19 | | - for (int j = 0; j < letter[digits[i] - '0'].size(); ++j) |
20 | | - dfs(letter, res, digits, cur + letter[digits[i] - '0'][j], i + 1); |
21 | | - } |
22 | 22 | }; |
23 | | -class Solution2 { |
24 | | - vector<string> combine(vector<string> &a, vector<string> &b) { |
| 23 | + |
| 24 | +vector<string> Solution::letter = {"", "", "abc", "def", "ghi", |
| 25 | + "jkl", "mno", "pqrs", "tuv", "wxyz"}; |
| 26 | + |
| 27 | +string keymap[] = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; |
| 28 | +class Solution { |
| 29 | + vector<string> combine(vector<string>& a, string& b) { |
25 | 30 | vector<string> res; |
26 | | - for (auto &i : a) { |
27 | | - for (auto &j : b) { |
| 31 | + for (auto& i : a) { |
| 32 | + for (auto& j : b) { |
28 | 33 | res.push_back(i + j); |
29 | 34 | } |
30 | 35 | } |
31 | 36 | return res; |
32 | 37 | } |
| 38 | + |
33 | 39 | public: |
34 | 40 | vector<string> letterCombinations(string digits) { |
35 | | - if (digits.empty()) return {}; |
36 | | - vector<string> res; |
37 | | - string[] map = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; |
38 | | - res.push_back(""); |
39 | | - for (auto &d : digits) { |
40 | | - res = combine(res, map[d - '2']); |
| 41 | + if (digits.empty()) |
| 42 | + return {}; |
| 43 | + vector<string> res = {""}; |
| 44 | + for (auto& d : digits) { |
| 45 | + res = combine(res, keymap[d - '2']); |
41 | 46 | } |
42 | 47 | return res; |
43 | 48 | } |
|
0 commit comments