标签:mis ems tco loading 代码 src i++ back cto
leetcode - 17:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/submissions/
感觉就是一个递归加回溯。
把digits列出的数字键按顺序递归dfs下去,每个按键因为有多个字母,所以拼完一个字符串后要回溯拼下一个字母,所以用了个for循环。
string pos[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
void dfs(string digits,int depth,vector<string>& ans,string tmp){
// 如果达到了最深,把答案放进去,并回溯
if(depth == digits.size()) {
ans.push_back(tmp);
return;
}
// 获取当前按键中的字母
int key = digits[depth]-‘0‘;
string nums = pos[key];
for(int i =0;i<nums.size();i++){
// 回溯后会将按键中下一个字母放入,并继续递归下一个按键
dfs(digits,depth+1,ans,tmp+nums[i]);
}
}
vector<string> letterCombinations(string digits) {
vector<string> ans;
if(digits.size() == 0) return ans;
dfs(digits,0,ans,"");
return ans;
}
标签:mis ems tco loading 代码 src i++ back cto
原文地址:https://www.cnblogs.com/baboon/p/13067507.html