class Solution {
public:
void letterCombinations_aux(string &digits,int step,string &path,vector<string> &ret)
{
string str[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
if(step==digits.size())
{
ret.push_back(path);
return;
}
for(int i=0;i<str[digits[step]-'0'].size();i++)
{
path.push_back(str[digits[step]-'0'][i]);
letterCombinations_aux(digits,step+1,path,ret);
path.pop_back();
}
}
vector<string> letterCombinations(string digits) {
vector<string> ret;
string path;
letterCombinations_aux(digits,0,path,ret);
return ret;
}
};
public:
void letterCombinations_aux(string &digits,int step,string &path,vector<string> &ret)
{
string str[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
if(step==digits.size())
{
ret.push_back(path);
return;
}
for(int i=0;i<str[digits[step]-'0'].size();i++)
{
path.push_back(str[digits[step]-'0'][i]);
letterCombinations_aux(digits,step+1,path,ret);
path.pop_back();
}
}
vector<string> letterCombinations(string digits) {
vector<string> ret;
string path;
letterCombinations_aux(digits,0,path,ret);
return ret;
}
};