题目大意:根据给出的手机数字键盘(2-9每个数字代表不同的一些字母),找出目标数字代表的所有字符串组合
分析:回溯法。这种要求出全部组合的题,通常使用回溯法来穷举,当数据量过大时再考虑dp等等。
代码:
class Solution {
public:
string nums[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
vector<string> ans;
vector<string> letterCombinations(string digits) {
if(digits.size() == 0) return ans;
string tmp = "";
dfs(0,digits,tmp);
return ans;
}
void dfs(int i,string digits,string tmp){
if(i == digits.size()){
ans.push_back(tmp);
return;
}
int num = digits[i] - '0';
for(int j = 0;j < nums[num].size();j++){
dfs(i + 1,digits,tmp+nums[num][j]);
}
}
};