Problem: 49. 字母异位词分组
文章目录
- 题目描述
- 思路及解法
- 复杂度
- Code
题目描述
思路及解法
1.以字符串作为键,与该键是字母异位词所组成的数组为值创建map集合;
2.每次取出一个字符串将其排序,再存入对应的数组;
3.将map中的值存入到一个二维组数中并返回;
复杂度
时间复杂度:
O ( n × m l o g m ) O(n\times mlogm) O(n×mlogm);其中 n n n为字符串的个数, m m m为所有字符串中最长的字符个数
空间复杂度:
O ( n ) O(n) O(n)
Code
class Solution {
public:
/**
* Hash
*
* @param strs Given string
* @return vector<vector<string>>
*/
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> map;
for (string& str : strs) {
string key = str;
sort(key.begin(), key.end());
map[key].push_back(str);
}
vector<vector<string>> anagramGroups;
for (auto& pair : map) {
anagramGroups.push_back(pair.second);
}
return anagramGroups;
}
};