first DFS
void DFS(string digits,vector<string> dic,int level,string out,vector<string> &res)
{
if(level==digits.size())
{
res.push_back(out);
}
else
{
string str=dic[digits[level]-'2'];
for(int i=0;i<str.size();i++)
{
out+=str[i];
DFS(digits,dic,level+1,out,res);
out.pop_back();
}
}
}
vector<string> letterCombinations(string digits) {
if(digits.empty()) return {};
vector<string>dic{"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
vector<string> res;
DFS(digits,dic,0,"",res);
return res;
}
本文介绍了一种基于深度优先搜索(DFS)的算法,用于将电话按键上的数字转换为可能的字母组合。通过递归调用DFS函数,从字符串的每个位置开始,查找与数字对应的字母,并将所有可能的组合添加到结果集中。此算法适用于解决电话号码对应的所有可能字母组合的问题。
8万+

被折叠的 条评论
为什么被折叠?



