• leetcode 题解 || Letter Combinations of a Phone Number 问题


    problem:

    Given a digit string, return all possible letter combinations that the number could represent.

    A mapping of digit to letters (just like on the telephone buttons) is given below.

    Input:Digit string "23"
    Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
    

    Note:
    Although the above answer is in lexicographical order, your answer could be in any order you want.


     thinking:

    (1)满足要求的数字为2~9。

    (2)用一个array保存数字相应的字符,再用dfs枚举全部解

    code:

    class Solution {
    private:
        map<char, vector<char> > dict;
        vector<string> ret;
    public:
        void createDict()
        {
            dict.clear();
            dict['2'].push_back('a');
            dict['2'].push_back('b');
            dict['2'].push_back('c');
            dict['3'].push_back('d');
            dict['3'].push_back('e');
            dict['3'].push_back('f');
            dict['4'].push_back('g');
            dict['4'].push_back('h');
            dict['4'].push_back('i');
            dict['5'].push_back('j');
            dict['5'].push_back('k');
            dict['5'].push_back('l');
            dict['6'].push_back('m');
            dict['6'].push_back('n');
            dict['6'].push_back('o');
            dict['7'].push_back('p');
            dict['7'].push_back('q');
            dict['7'].push_back('r');
            dict['7'].push_back('s');
            dict['8'].push_back('t');
            dict['8'].push_back('u');
            dict['8'].push_back('v');
            dict['9'].push_back('w');
            dict['9'].push_back('x');
            dict['9'].push_back('y');
            dict['9'].push_back('z');
        }
        
        void dfs(int dep, int maxDep, string &s, string ans)
        {
            if (dep == maxDep)
            {
                ret.push_back(ans);
                return;
            }
            
            for(int i = 0; i < dict[s[dep]].size(); i++)
                dfs(dep + 1, maxDep, s, ans + dict[s[dep]][i]);
        }
        
        vector<string> letterCombinations(string digits) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            ret.clear();
            if(digits.size()==0)
                return ret;
            createDict();
            dfs(0, digits.size(), digits, "");
            return ret;
        }
    };


  • 相关阅读:
    python习题一
    华为区块链平台
    百度超级链 [Xuperchain]
    $$$Fabric v1.0 block结构与修改
    搭建 Hyperladger Fabric 基本流程
    python开发区块链【公有链】
    Asp.Net中WebServices的调用方式
    关于vs08生成解决方案慢的解决方法
    vs项目启动调试时,显示找不到文件问题
    新的公司
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6780211.html
Copyright © 2020-2023  润新知