要求:九键输入能打多少组合
思路:回溯:用到dfs,跟分治的区别在于额,一个是优化版的穷举遍历,一个是先分后和,差不多吧,都可以解决排列组合问题,不必纠结,灵活运用
class Solution {
public:
string s[8]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
void lettercom(string &digits,int index,vector<string> &v,string tmp){
if(index>=digits.length()){
v.push_back(tmp);
return;
}
for(int i=0;i<s[digits[index]-'0'-2].length();++i){
char ttmp=s[digits[index]-'0'-2][i];
lettercom(digits,index+1,v,tmp+ttmp);
}
}
vector<string> letterCombinations(string digits) {
if(digits=="")return {};
vector<string> v;
lettercom(digits,0,v,"");
return v;
}
};