題目大意:給出一組字符串,將每個字符串按照相同的迴文詞進行分組。所謂迴文詞就是組成單詞的字母的種類和數目沒有變,只是順序改變而已。要求返回結果中每組迴文詞按字典序排列。
算法思想:
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;
}
};