题目链接:
https://leetcode.com/problems/letter-combinations-of-a-phone-number/
题目描述:
给一个数字字符串,和一个数字的映射表,找出所有的字母组合。顺序可任意。
Input:Digit string “23”
Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
题目分析:
递归来解,对当前已经找到的字符串,递归剩下的字符串。
代码:
class Solution {
public:
vector<string> s={ " ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
vector<string> res;
int n;
void fun(string ss,string digits,int idx){
if (idx == n){
res.push_back(ss);
return;
}
int j = digits[idx] - '0';
for (int i = 0; i<s[j].size(); i++){
string sss = ss;
ss += s[j][i];
fun(ss, digits, idx + 1);
ss = sss;
}
}
vector<string> letterCombinations(string digits) {
n=digits.size();
if(n==0){
return res;
}
string ss="";
fun(ss,digits,0);
return res;
}
};