电话号码的字母组合
题目解答
class Solution {
public:
string map[10]={
"",//0
"",//1
"abc",//2
"def",//3
"ghi",//4
"jkl",//5
"mno",//6
"pqrs",//7
"tuv",//8
"wxyz"//9
};
vector<string> result;
string path;
void backtraking(int i, int end, string digits){
if(i==end){
if(path.size()!=0)result.push_back(path);
return;
}
for(char ch:map[digits[i]-'0']){
path.push_back(ch);
backtraking(i+1, end, digits);
path.pop_back();
}
return;
}
vector<string> letterCombinations(string digits) {
int end=digits.size();
result.clear();
path.clear();
int i=0;
backtraking(i,end,digits);
return result;
}
};
解题感悟
这是当时没有一点头绪,然后大致地看了卡哥的题解之后才写出来的,当时觉得很巧妙的一点就是是用来string类型的数组来解决了该问题。然后一点就是如何画该回溯算法的树状图:
这一点也是很巧妙的,掌握了该两点,还有一个点,就是在我写回溯函数的时候,要穿参数,但是我直接写又不知道写那些参数,要想一些才知,。
(参考代码随想录网站)