题目描述如下:
Given a digit string, 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.
代码如下:
vector<string> letterCombinations(string dig)
{
vector<string> dict(12);
dict.push_back("1");
dict.push_back("abc");
dict.push_back("def");
dict.push_back("ghi");
dict.push_back("jkl");
dict.push_back("mno");
dict.push_back("pqrs");
dict.push_back("tuv");
dict.push_back("wxyz");
int n = dig.length();
vector<int> idx(n,0);
vector<string> ret;
while(true)
{
int i=0;
string tmp(n);
for(i=0;i<n;i++)
{
tmp[i]=dict[ dig[i]-'0'-1 ][idx[i]];
}
ret.push_back(tmp);
int k=n-1;
while(k>=0)
{
if( idx[k] < dict[ dig[k]-'0'-1]-1)
{
idx[k]++;
break;
}
else
{
idx[k]=0;
k--;
}
}
if(k<0)
break;
}
return ret;
}