力扣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)
posted @ 2025-04-15 13:39  林下清风~  阅读(17)  评论(0)    收藏  举报