一、原题链接
二、题目分析与解题思路
这是一道暴搜的题目(深搜),把组合空间想象成一棵树,由上至下搜索。实现的时候有一些小细节,比如存好的string数组,比如dfs的写法,注意体会。
idx:当前搜索的字符位置;
path:搜索路径(已有的(部分)答案)。
三、解题代码
class Solution {
public:
string str[10] = {
"", "", "abc", "def",
"ghi", "jkl", "mno",
"pqrs", "tuv", "wxyz"
};
vector<string> res;
vector<string> letterCombinations(string digits) {
if(digits == "") return res;
dfs(digits, 0, "");
return res;
}
void dfs(string& digits, int idx, string path){
if(idx == digits.size()) {
res.push_back(path);
return;
}
for(auto c : str[digits[idx] - '0']) dfs(digits, idx + 1, path + c);
}
};
四、知识点提要
dfs,字符串处理。