[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);

        }

    }

};

你可能感兴趣的:(LeetCode)