Given a string containing digits from 2-9
inclusive, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
class Solution {
public:
vector<string> letterCombinations(string digits)
{
int n=digits.size();
vector<string> ret;
if(n==0)
return ret;
string dict[]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
findAll(digits,dict,0,"",ret);
return ret;
}
void findAll(string digits,string dict[],int level,string out,vector<string> &ret)
{
if(level==digits.size())
return ret.push_back(out);
else
{
string str=dict[digits[level]-'2'];
for(int i=0;i<str.size();i++)
{
out.push_back(str[i]);
findAll(digits,dict,level+1,out,ret);
out.pop_back();
}
}
}
};