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; } };
分析:
最终还是用到了排序。