Leetcode:groupAnagrams字母异位词分组

题目:

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

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

示例 1:

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

思路:

用哈希表解决该问题,每个字符数进行字母排序,得到的字符串作为key,然后把每个字符串放进哈希表中,把表中每个key对应的vector放进 res中

代码:

class Solution {
public:
    vector> groupAnagrams(vector& strs) {
        vector> res;
        unordered_map> hash;
        for(auto str:strs) {
            auto s = str;
            sort(s.begin(),s.end()); //对字符串进行排序
            hash[s].push_back(str);  //用按照字母排序后的字符串作为键值
        }
        for(auto h:hash) {
            res.push_back(h.second); //把表中每个key对应的vector放进 res中
        }
        return res;
    }
};

你可能感兴趣的:(leetcode,算法,职场和发展)