leecode第四十九题(字母异位词分组)

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> result;
        int len=strs.size();
        
        vector<string> strs_copy=strs;//复制原数组,并对其中每个字符串排序
        for(int i=0;i<len;i++)
            sort(strs_copy[i].begin(), strs_copy[i].end());
        
        map<string,int> temp;//建立一个map
        int temp_num=0;
        for(int i=0;i<len;i++)
        {
            map<string,int>::iterator it;
            it=temp.find(strs_copy[i]);//检查每一个排序后的字符串
            if(it==temp.end())//如果没有查到,就在map里插入,并给出标记序号temp_num
            {
                temp.insert(make_pair(strs_copy[i],temp_num));
                temp_num++;
                vector<string> tt;
                tt.push_back(strs[i]);
                result.push_back(tt);
            }
            else//如果查到了,就直接push进去
                result[it->second].push_back(strs[i]);
        }
        return result;
    }
};

分析:

最终还是用到了排序。

posted @ 2019-07-19 10:59  深夜十二点三十三  阅读(83)  评论(0编辑  收藏  举报