题目
17. 电话号码的字母组合
思路
定义数组存储数字对应的字符串,本题回溯时为index+1,因为下一个数字选的是下一个字符串,前两题都是属于同一个字符串。
代码
class Solution {
private:
vector<string>result;
string duiying[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
string s;
void backtracking(string digits,int index)
{
if(index==digits.size())
{
result.push_back(s);
return;
}
int digit=digits[index]-'0'; //转为数字
string letters=duiying[digit];
for(int i=0;i<letters.size();i++)
{
s.push_back(letters[i]);
backtracking(digits,index+1);
s.pop_back();
}
}
public:
vector<string> letterCombinations(string digits) {
if(digits.size()==0)
{
return result;
}
backtracking(digits,0);
return result;
}
};