首页 > 代码库 > [LeetCode] Letter Combinations of a Phone Number

[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] Letter Combinations of a Phone Number