(回溯递归dfs 电话号码的字母组合 remake)leetcode 17
只找边界条件和非边界条件,剩下的交给数学归纳法就行,考虑子问题的重复性
[class Solution {
vector<string>str = { "","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" };
string combine;
vector<string>ans;
void backtracking(int index,string digits)
{
if (index >= digits.size())
{
ans.push_back(combine);
return;
}
int t = digits[index]-48;//ch查在str的哪行下标里面
for (int i = 0;i < str[t].size();i++)//遍历第t行
{
combine.push_back(str[t][i]);
backtracking(index + 1, digits);
combine.pop_back();
}
}
public:
vector<string> letterCombinations(string digits) {
if(digits.size()==0)
return ans;
backtracking(0,digits);
return ans;
}
};]