/**
* 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.
*/
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
unordered_map<char, string> M = {
{'0', ""},
{'1', ""},
{'2', "abc"},
{'3', "def"},
{'4', "ghi"},
{'5', "jkl"},
{'6', "mno"},
{'7', "pqrs"},
{'8', "tuv"},
{'9', "wxyz"}
};
vector<string> letterCombinations(string digits)
{
string s1;
vector<string> rs, tmp;
rs.push_back("");
for (int i = 0; i < digits.length(); i++)
{
s1 = M[digits[i]];
if (s1.empty()) continue;
tmp.clear();
for (int j = 0; j < s1.length(); j++)
{
for (int k = 0; k < rs.size(); k++)
{
tmp.push_back(rs[k] + s1[j]);
}
}
rs = tmp;
}
return rs;
}
int main()
{
vector<string> rs;
rs = letterCombinations("234");
for (int i = 0; i < rs.size(); i++)
{
cout << rs[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
【leetcode】17. Letter Combinations of a Phone Number
最新推荐文章于 2025-05-25 20:50:12 发布