LeetCode---Group Anagrams

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

算法思想:

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;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章