49. 字母异位词分组

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

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。


示例 1:

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

因为要找组成一样的单词,如何判断? 最简单的,一排序,如果是同一个单词,那么就是组成一样的 比如 “eat” "tea" 排序后都为 “aet” 只要引入一个hash表,索引是排序后的单词,值为结果vector的下标,循环一遍就好了 代码如下:

> 代码


class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        map<string,int> mp;
        vector<vector<string>> res;
        string tmp;
        int dex = 0;
        for(int i = 0;i < strs.size();i++){
            tmp = strs[i];
            sort(tmp.begin(),tmp.end());
            auto iter = mp.find(tmp);
            if(iter != mp.end()){
                res[iter->second].push_back(strs[i]);
            }
            else{
                mp[tmp] = dex++;
                vector<string> vec(1,strs[i]);
                res.push_back(vec);
            }
        }
        return res;
    }
};
posted @ 2023-07-19 11:14  xiazichengxi  阅读(35)  评论(0)    收藏  举报