zoukankan      html  css  js  c++  java
  • [LeetCode] Letter Combinations of a Phone Number

    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.

    下面是我AC的代码:

    /**
     * author:Zhou J
     */
    
    class Solution 
    {
    public:
        vector<string> letterCombinations(string digits) 
        {
            map<char, string> digitToString;
            digitToString.insert(make_pair('0', ""));
            digitToString.insert(make_pair('1', ""));
            digitToString.insert(make_pair('2', "abc"));
            digitToString.insert(make_pair('3', "def"));
            digitToString.insert(make_pair('4', "ghi"));
            digitToString.insert(make_pair('5', "jkl"));
            digitToString.insert(make_pair('6', "mno"));
            digitToString.insert(make_pair('7', "pqrs"));
            digitToString.insert(make_pair('8', "tuv"));
            digitToString.insert(make_pair('9', "wxyz"));
            
            vector<string> ret;
            string path;
            letterCombinationsRec(digits, ret, path, digitToString);
            return ret;
        }
        
        void letterCombinationsRec(const string &digits,
                                   vector<string> &ret,
                                   string &path,
                                   map<char, string> &digitToString)
        {
            if (path.size() == digits.size())
            {
                ret.push_back(path);
                return;
            }
            
            for(const auto &digit :  digitToString[digits[path.size()]])
            {
                path.push_back(digit);
                letterCombinationsRec(digits, ret, path, digitToString);
                path.erase(path.size() - 1);
            }
        }
    };
  • 相关阅读:
    XML基础介绍【二】
    XML基础介绍【一】
    Java面向对象(三) 【面向对象深入:抽象类,接口,内部类等】
    Java面向对象(二)
    Java面向对象(一)
    main特别之处
    c语言线性表
    c语言三元组
    线性表(顺序表的创建)
    创建一个三元组
  • 原文地址:https://www.cnblogs.com/jianxinzhou/p/4190014.html
Copyright © 2011-2022 走看看