题目描述
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"].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
分析:深度优先搜索法,递归回溯
class Solution {
string dic[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
string d="";
vector<string> z;
public:
vector<string> letterCombinations(string digits) {
dfs(digits,0);
return z;
}
void dfs(string digits,int idex)
{
if(idex==digits.length()) z.push_back(d);
else
{
int i,t=digits[idex]-'0';
string str=dic[t];
for(i=0;i<str.length();i++)
{
string str1=d;
d+=str[i];
dfs(digits,idex+1); //深度优先搜索
d=str1; //回溯
}
}
}
};