class Solution {
public:
vector<string> letterCombinations(string digits) {
int sz = digits.size(), tvsz;
if (sz == 0)
return vector<string>();
map<char, vector<char>> dic;
vector<char> tv;
vector<string> res, tres;
res.push_back(string());
string ts;
dic.insert(pair<char, vector<char>>('1', {}));
dic.insert(pair<char, vector<char>>('2', {'a','b','c'}));
dic.insert(pair<char, vector<char>>('3', {'d','e','f'}));
dic.insert(pair<char, vector<char>>('4', {'g','h','i'}));
dic.insert(pair<char, vector<char>>('5', {'j','k','l'}));
dic.insert(pair<char, vector<char>>('6', {'m','n','o'}));
dic.insert(pair<char, vector<char>>('7', {'p','q','r','s'}));
dic.insert(pair<char, vector<char>>('8', {'t','u','v'}));
dic.insert(pair<char, vector<char>>('9', {'w','x','y','z'}));
for (int i = 0; i < sz; ++i) {
int ressz = res.size();
tres.clear();
tv = dic[digits[i]];
tvsz = tv.size();
for (int j = 0; j < ressz; ++j) {
ts = res[j];
for (int z = 0; z < tvsz; ++z) {
tres.push_back(ts + tv[z]);
}
}
res = tres;
}
return res;
}
};
注意一下“字典序”的用法吧,sort自定义比较函数嗯…
本文深入探讨了一种用于生成电话按键对应字母的所有可能组合的算法。通过使用C++实现,详细介绍了如何构建一个映射从数字到字母的字典,并利用递增的方式生成所有可能的组合。该算法适用于解决电话号码输入时的联想问题,为用户提供快速的字母匹配方案。
143

被折叠的 条评论
为什么被折叠?



