给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = ""
输出:[]
示例 3:
输入:digits = "2"
输出:["a","b","c"]
提示:
0 <= digits.length <= 4
digits[i] 是范围 ['2', '9'] 的一个数字。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
vector<string> ans;
void dfs(vector<string> v,int n,string digits,string &s){
if(n==digits.size()){
ans.push_back(s);
return;
}
for(int i=0;i<v[digits[n]-'0'-2].size();i++){
s=s+v[digits[n]-'0'-2][i];
dfs(v,n+1,digits,s);
s.erase(s.size()-1);
}
}
vector<string> letterCombinations(string digits) {
int len=digits.size();
if(len==0) return ans;
string s="";
vector<string> v(8);
v[0]="abc";
v[1]="def";
v[2]="ghi";
v[3]="jkl";
v[4]="mno";
v[5]="pqrs";
v[6]="tuv";
v[7]="wxyz";
dfs(v,0,digits,s);
return ans;
}
};