字母异位词分组

https://leetcode.cn/problems/group-anagrams/description/

前置知识:

string类可以原地排序,返回的是排序完的结果

string nstr = str;
sort(nstr.begin(), nstr.end());
heap[nstr].push_back(str);

遍历哈希表

for(auto& item : heap){
    cout << item.first << endl;
    res.push_back(item.second);
}

其中itemkey-value键值对,获取keyitem.first,获取valueitem.second


思路:

将各个字符串进行ASCII排序,字母异位词便可以转换成同等的排序后的字符串。
排序后的字符串作为key,原始字符串作为value便可以解决问题。


class Solution {
public:
    vector> groupAnagrams(vector& strs) {
        unordered_map> heap;

        for (auto& str: strs){
            string nstr = str;
            sort(nstr.begin(), nstr.end());
            heap[nstr].push_back(str);
        }

        vector> res;
        
        for(auto& item : heap){
            cout << item.first << endl;
            res.push_back(item.second);
        }
        return res;
    }
};

你可能感兴趣的:(#,LeetCode刷题,力扣,算法)