Leetcode 49 Group Anagrams

这道题属于查找表问题,最核心的内容在于key和value分别保存什么样的值。

刚开始想了很久也没想出来,因为这道题正确的解答之一是利用unordered_map<string, vector<string>>,即value是个容器。

key是对每个字符串进行排序后的结果。

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> res;
        unordered_map<string, vector<string>> hashmap;
        
        for(int i=0; i<strs.size(); ++i) {
            string str_bak(strs[i]);
            string str = strs[i];
            
            sort(str.begin(), str.end());
            hashmap[str].push_back(str_bak);
        }
        
        unordered_map<string, vector<string>>::iterator it;
        it = hashmap.begin();
        
        while (it != hashmap.end()) {
            res.push_back({it->second});
            ++it;
        }
        
        return res;
    }
};

 

posted @ 2018-08-31 13:49  ly-bnu  阅读(86)  评论(0)    收藏  举报