题目大意:给出一组字符串,将每个字符串按照相同的回文词进行分组。所谓回文词就是组成单词的字母的种类和数目没有变,只是顺序改变而已。要求返回结果中每组回文词按字典序排列。
算法思想:
1.遍历字符串数组,对于每个字符串将其字典序排序,排序后的结果作为map容器的键以此将其分组。
2.遍历map容器,判断每个键对应的值个数是否大于0,将值进行排序后放入结果集中。
代码如下:
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string> >res;
if(strs.size()==0) return res;
unordered_map<string,vector<string> > group;
for(auto pos=strs.begin();pos!=strs.end();++pos){
string key=*pos;
sort(key.begin(),key.end());
group[key].push_back(*pos);
}
for(auto pos=group.begin();pos!=group.end();++pos){
if(pos->second.size()!=0){
sort(pos->second.begin(),pos->second.end());
res.push_back(pos->second);
}
}
return res;
}
};