1. 题目来源
链接:49. 字母异位词分组
2. 题目解析
排序+哈希表即可。
无非就是排序,要么就是计数,再要么就是字符串哈希,但是需要设置一个与字母出现位置无关的哈希函数。
时间复杂度:
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)
空间复杂度:
O
(
n
)
O(n)
O(n)
代码:
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> ans;
unordered_map<string, vector<string>> hash;
for (auto &e : strs) {
string last = e;
sort(e.begin(), e.end());
hash[e].push_back(last);
}
for (auto &e : hash) ans.push_back(e.second);
return ans;
}
};