网站建设四个步骤,怎么才能让自己做的网站上传到百度搜关键字可以搜到,网站广告位有哪些,杭州网络公司排名前文C深度递归遍历解决电话号码的字母组合问题#xff0c;本题考察的比较全面#xff0c;考察到vector的使用#xff0c;深度遍历以及递归的熟练度#xff0c;希望能对铁子们有所帮助一#xff0c;题目链接#xff1a;https://leetcode.cn/problems/letter-c…前文C深度递归遍历解决电话号码的字母组合问题本题考察的比较全面考察到vector的使用深度遍历以及递归的熟练度希望能对铁子们有所帮助一题目链接https://leetcode.cn/problems/letter-combinations-of-a-phone-number/二解法如上图所示以256为例我们将三个字符串各个字符的排列组合展开我们发现这个结构类似于多叉树的结构主要是考察深度遍历因此我们也可以用递归来完成。既然已经确定可以用递归来完成那么我们就需要确定递归所需参数。首先我们需要创建一个vectorstring ret用来存储需要返回的字母组合同时需要创建size_t depth来控制递归的深度再创建一个string combinestr用来存储每组的字母组合,当然digits也是必须要传的。所需参数已确定那么具体的递归过程呢。我们以上图ajm ajn ajo为例子具体讲解一下递归的过程三代码代码实现:class Solution {//获取每个数字对应字符串//由于0 1没字符所以设置成空串string get_numberstr[10]{,,abc,def,ghi,jkl,mno,pqrs,tuv,wxyz};
public:void Combination(const string digits,size_t depth,string combinestr, vectorstring ret){ //depth控制深度digits的长度就是我们递归的深度if(depthdigits.size()){ret.push_back(combinestr);return;}int digitdigits[depth]-0;//获取数字字符string numberstrget_numberstr[digit];//获取数字所对应的字符串for(auto ch:numberstr){Combination(digits,depth1,combinestrch,ret);}}vectorstring letterCombinations(string digits) {vectorstring ret;if(digits.size()0){return ret;}size_t depth0;//控制递归深度string combinestr;//存储每组字符串Combination(digits,depth,combinestr,ret);return ret;}
};成功实现