您的位置:首页 > 其它

[LeetCode] Letter Combinations of a Phone Number

2014-12-28 15:07 330 查看
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);
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: