<LeetCode>49. 字母异位词分组

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

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

说明:

  • 所有输入均为小写字母。

  • 不考虑答案输出的顺序。

本题我记录下来的根本原因,是因为,太精妙了!

我原来用哈希表的时候,总是用unordered_map<***,int> hash;相当于是1对1的关系

但是这题告诉我,还可以用<***,vector<>>来完成一对多的关系,简直完美!


class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> res;
        unordered_map<string,vector<string>> hash;
        for(auto str : strs){
            string t = str;
            sort(t.begin(),t.end());
            hash[t].push_back(str);
        }
        for(auto var : hash)
            res.push_back(var.second);     
        return
    }
};

猜你喜欢

转载自blog.csdn.net/w8253497062015/article/details/80865992