力扣hot100——49.字母异位词分组
题目链接:49. 字母异位词分组 - 力扣(LeetCode)
题目概述: 将组成字母相同的字符串放在一起
思路:
所谓“字母异位词”的共同点是组成的字母元素相同,个数相同但是顺序不同。我们可以将所有的字符串按照字典序排列,得到一个新的字符串,字母异位词得到的新字符串相同,然后利用unordered_map存储,以字典序字符串作为key值,value存放字母异位词。
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string,vector<string>> um;
vector<vector<string>> res;
for(int i=0;i<strs.size();i++){
string s=strs[i];
sort(s.begin(),s.end());//将字符串按照字典序重新排序
um[s].push_back(strs[i]);//字典序相同的字符串放在一个vector里
}
for(auto it=um.begin();it!=um.end();it++){
res.push_back(it->second);
}
return res;
}
};
- 时间复杂度:O(nmlogm),n代表字符串数组的长度,m是字符串平均长度,字符串排序的时间复杂度是O(mlogm)。
- 空间复杂度:O(nm)

浙公网安备 33010602011771号