长度最大为4,所以用暴搜就好了,先将数字对应的字符串存储下来。用回溯写就好了。
class Solution {
string maps[10]={"","","abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
void dfs(int u,string&path,vector<string>&ans,string &digits)
{
if(u==digits.length())
{
ans.push_back(path);
return;
}
for(char c:maps[digits[u]-'0'])
{
path[u]=c;
dfs(u+1,path,ans,digits);
}
}
public:
vector<string> letterCombinations(string digits) {
int n=digits.length();
if(n==0)return{};
vector<string>ans;
string path(n,0);
dfs(0,path,ans,digits);
return ans;
}
};