递归
- 这里就是先构造一个数字到字符串的字典map,然后函数中传入引用res(结果),引用dic(字典),数字字符串,合成的字符串。
- 在process函数里,首先判断返回条件,然后递归调用。
C++代码:
class Solution {
public:
/**
* @param digits A digital string
* @return all posible letter combinations
*/
vector<string> letterCombinations(string& digits) {
vector<string> res;
int len = res.size();
map<char,string> dic;
string temp="";
dic.insert(pair<char,string>('2',"abc"));
dic.insert(pair<char,string>('3',"def"));
dic.insert(pair<char,string>('4',"ghi"));
dic.insert(pair<char,string>('5',"jkl"));
dic.insert(pair<char,string>('6',"mno"));
dic.insert(pair<char,string>('7',"pqrs"));
dic.insert(pair<char,string>('8',"tuv"));
dic.insert(pair<char,string>('9',"wxyz"));
process(res,dic,digits,temp);
return res;
}
void process(vector<string> &res, map<char,string> &dic, string digits, string temp) {
if (digits.size() == 0) {
if(temp != "")
res.push_back(temp);
return;
}
int len = dic[digits[0]].size();
for (int i=0; i<len; i++) {
process(res,dic,digits.substr(1),temp+dic[digits[0]][i]);
}
}
};