LeetCode刷题_c++版-49字母异位词分组

知识点

hash_map
hash_map的遍历
sort函数的使用
字符串排序

代码

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> result;
        if(strs.size() == 0) return result;
        map<string, vector<string>> hash_map;
        for(int i = 0; i< strs.size(); i++){
            string temp_str = strs[i];
            //字符串的排序,组成字符相同的字符串,排序后的结果都是一样的
            sort(temp_str.begin(), temp_str.end());
            //如果map中没有该字符串,则先添加键
            if(hash_map.find(temp_str) == hash_map.end()) {
                vector<string> temp;
                hash_map[temp_str] = temp;
            }
            //将字符串push到对应键中
            hash_map[temp_str].push_back(strs[i]);
        }
        map<string, vector<string>>::iterator it;

        //hash_map的遍历,将映射完成的,同一组的值push到result中
        for(it = hash_map.begin(); it!=hash_map.end(); it++){
            result.push_back(it->second);
        }
        return result;
    }
};

结果

LeetCode刷题_c++版-49字母异位词分组_第1张图片

你可能感兴趣的:(Leetcode,刷题,leetcode,c++,哈希算法,算法,数据结构)