题意:将由相同字母组成的单词合并在一起。
思路:先将字母排序,用hash表实现O(1)查找。
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
map<string, int> h;
vector<vector<string> > re;
int ind = 0;
std::map<string, int>::iterator it;
for(int i = 0; i < strs.size(); ++ i) {
string s = strs[i];
std::sort(s.begin(), s.end());
it = h.find(s);
if(it == h.end()) {
vector<string> temp;
temp.push_back(strs[i]);
re.push_back(temp);
h[s] = ind;
ind ++;
}
else {
int tempind = h[s];
re[tempind].push_back(strs[i]);
}
}
return re;
}
};

本文介绍了一种使用哈希表和排序来高效解决将相同字母组成的单词进行分组的问题。通过将每个单词排序并利用哈希表实现快速查找,该算法能够有效地对输入的字符串列表进行分组。
388

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



