Leetcode 49. 字母异位词分组 中等

题目

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

思路:

异位词就是具有相同字符的单词。

我们可以将str排序后作为key,保存str

 

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string,vector<string>> m;
        vector<vector<string>> ret;
        for(auto& str:strs){
            string key=str;
            sort(key.begin(),key.end());
            m[key].push_back(str);
        }
        for(auto it=m.begin();it!=m.end();it++){
            ret.push_back(it->second);
        }
        return ret;
    }
};

 

posted @ 2022-03-16 16:03  鸭子船长  阅读(21)  评论(0编辑  收藏  举报