题目链接:
题目描述:
将给定的一组字符串数组,按照同构词(相同字母组成的单词)分类,每组单词按照字典排序。
题目分析:
哈希。先将字符串数组按字典序排一次,再构造map<string,vector<string>> hashMap
,遍历字符串数组,将数组中每一个字符串按字典序排好,作为键值,这样就能将同构词放在同一组中。
代码:
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
int len=strs.size();
vector<vector<string>> result;
if(len==0){
return result;
}
sort(strs.begin(),strs.end());
map<string,vector<string>> hashMap;
for(int i=0;i<len;i++){
string str=strs[i];
sort(str.begin(),str.end());
hashMap[str].push_back(strs[i]);
}
map<string,vector<string>>::iterator iter=hashMap.begin();
for(;iter!=hashMap.end();iter++){
result.push_back(iter->second);
}
return result;
}
};