原题:
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.
Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
解题思路:
一开始先用一个map保存键盘上每个字符所对应的所有可能字符。如2——‘a’'b''c';
再用DFS求解树中digits.size()深度下所有可能的组合,存到vector中return。
代码:
vector<string> tmp;
map<char,string> m;
void dfstree(int deep,string s,string temp)
{
if(deep==s.size())
{
tmp.push_back(temp);
return;
}
for(int i=0;i<m[s[deep]].size();i++)
{
dfstree(deep+1,s,temp+m[s[deep]][i]);
}
}
vector<string> letterCombinations(string digits) {
if(digits=="")
{
return tmp;
}
m['2']="abc";
m['3']="def";
m['4']="ghi";
m['5']="jkl";
m['6']="mno";
m['7']="pqrs";
m['8']="tuv";
m['9']="wxyz";
string t;
dfstree(0,digits,t);
return tmp;
}