zoukankan      html  css  js  c++  java
  • LeetCode 017. *的字母组合 dfs

    地址 https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
    
    给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
    
    
    示例:
    
    输入:"23"
    输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

    算法1
    DFS做法 从每个数字对应的元素中选出一个 然后进入下一层
    最终每层中都选出一个对应的元素 则组合成一个答案

    以数字23为例

    class Solution {
    public:
    
        map<char, string> m = {
        {'2',"abc"},{'3',"def"},
        {'4',"ghi"},{'5',"jkl"},
        {'6',"mno"},{'7',"pqrs"},
        {'8',"tuv"},{'9',"wxyz"}
    };
    
    vector<string> ans;
    
    void dfs(string s, string digits, int idx)
    {
        if (idx == digits.size()) {
            ans.push_back(s);
            return;
        }
        char digt = digits[idx];
        for (int j = 0; j < m[digt].size(); j++) {
            s += m[digt][j];
            dfs(s, digits,idx + 1);
            s.pop_back();
        }
    }
    
    vector<string> letterCombinations(string digits) {
        if(digits.size() == 0) return vector<string> ();
        string s;
        dfs(s, digits, 0);
    
        return ans;
    }
    
    
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    MapBox TileMill
    优秀电影
    Mapnik 编译安装过程
    Debian 入门安装与配置2
    学习opengl十大网站(转载)
    PostgresSQL 学习资料记录处
    c++模板编程-异质链表
    Linux-统一事件源
    三组I/O复用模型的比较
    ZigZag-LeetCode
  • 原文地址:https://www.cnblogs.com/itdef/p/13565125.html
Copyright © 2011-2022 走看看