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;
}