思路:path存digits转字符串时各个数字的组合,相当于path是digits.size()大小的字符串,result里就是所有的组合了。用一个string类型的数组来存各个数字所对应的字符串。递归里index代表共有几个数字,再看注释即可。
c++题解:
class Solution {
public:
vector<string> result;
string path;
string letter[10]={
"",//0
"",//1
"abc",//2
"def",//3
"ghi",//4
"jkl",//5
"mno",//6
"pqrs",//7
"tuv",//8
"wxyz"//9
};
void traversal(string digits,int index)
{
if(index==digits.size())
{
result.push_back(path);
return;
}
int digit=digits[index]-'0';//把index指向的数字转为int
string letter_=letter[digit];//按照letter找出所对应的字符串
//本次循环只解决一个数字所对应的一个字符串
for(int i=0;i<letter_.size();i++)
{
path.push_back(letter_[i]);
traversal(digits,index+1);
path.pop_back();
}
}
vector<string> letterCombinations(string digits) {
if(digits.size()==0) return result;
traversal(digits,0);
return result;
}
};