• leetcode 17*的字母组合


     与子集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"};
    };
  • 相关阅读:
    MYSQL ALTER
    初入园子
    java常用基础(一)
    C语言类型转换
    C++用EGE简单实现别踩白块游戏
    CPP常用库函数以及STL
    至我的新博客
    工厂模式
    pl/sql developer 编码格式设置
    单例模式
  • 原文地址:https://www.cnblogs.com/joelwang/p/10923923.html
Copyright © 2020-2023  润新知