首页 > 其他 > 详细

leetcode 17电话号码的数字组合

时间:2019-05-25 22:03:49      阅读:113      评论:0      收藏:0      [点我收藏+]

技术分享图片

 与子集70?类似,子集每次两个分支,本题每次k个分支,子集是第一次不push第二次push元素,本题是每次都push元素,因此,本题答案的长度都为k,子集题目为各种组合;

/**
res,level,nums,i,dict
**/

class Solution {
public:
    vector<string> letterCombinations(string digits) {
        len=digits.length();
        if(len==0) return {};
        //字母转化为数字
        for(int i=0;i<len;i++){
            int num=digits[i]-0;
            nums.push_back(num);
        }
        vector<string> res;
        string level;
        dfs(0,res,level);
        return res;
    }
    //建立递归函数,从第一个号码开始递归,到最后一个号码结束;
    void dfs(int i,vector<string>&res,string& level){
        //递归边界
        if(i>=len){
            res.push_back(level);return;
        }
        //递归表达式,选择第i个元素
        string cur_str=dict[nums[i]];
        for(int k=0;k<cur_str.length();k++){
            level.push_back(cur_str[k]);
            dfs(i+1,res,level);
            level.pop_back();
        }
    }

private:
    int len;
    vector<int> nums;
    vector<string> dict={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
};

 

leetcode 17电话号码的数字组合

原文:https://www.cnblogs.com/joelwang/p/10923923.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!