49. 字母异位词分组

在这里插入图片描述
哈希表,搞清楚哈希表的键值对即可。键是排好序的string,这样子ate和aet就可以存一起了,值是string数组,将ate和aet存入这个数组,键是aet。用一个string记录排序前的s,将排序后的s当做键,排序前的s加入数组。最后遍历map,将将it->second加入res中。

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string,vector<string>> ma;
        vector<vector<string>> res;
        //这里用auto很好!,因为auto不加&不会改变原数组里的值
        for(auto s : strs){
            string value = s;
            sort(s.begin(),s.end());
            ma[s].push_back(value);
        }
        for(auto it = ma.begin(); it != ma.end(); it++){
            res.push_back(it->second);
        }
        return res;
    }
};
class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        //对数组里的每一个字符串进行排序,用一个unordered_map<string,vector>记录,最后遍历map将vector全加入res即可
        vector<vector<string>> res;
        unordered_map<string,vector<string>> ma;
        for(string s : strs){
            string tmp = s;
            sort(s.begin(),s.end());
            ma[s].push_back(tmp);
        }
        for(auto it = ma.begin(); it != ma.end(); ++it){
            res.push_back(it->second);
        }
        return res;
    }
};
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页