题意:输入数字,找所以可能的字母组合。
思路:DFS,到达叶结点输出。
class Solution {
public:
vector <string> b;
vector <string> re;
vector<string> letterCombinations(string digits) {
string s = "abc";
b.push_back(s);
s = "def";
b.push_back(s);
s = "ghi";
b.push_back(s);
s = "jkl";
b.push_back(s);
s = "mno";
b.push_back(s);
s = "pqrs";
b.push_back(s);
s = "tuv";
b.push_back(s);
s = "wxyz";
b.push_back(s);
string temp;
dfs(digits, 0, temp);
return re;
}
int dfs(string digits, unsigned p, string temp) {
if(p >= digits.length()) {
re.push_back(temp);
cout << temp << endl;
return 0;
}
int key = digits[p] -'0' -2;
for(unsigned i = 0; i< b[key].length(); ++ i) {
dfs(digits, p + 1, temp + b[key][i]);
}
return 0;
}
};