49. 字母异位词分组

130 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

  • 题号:力扣49
  • 知识点:哈希,字符串
  • 总结 题干:

QQ截图20220422224006.png

思路:

  • 1.异位词就是字母类别和个数相同的单词,但是字母的排列顺序不同。
  • 2.我们可以先对所有单词排个序,如果是异位词的话,排序之后应该是一样的字符串。
  • 3.然后再以排序之后的字符串为key值,以排序之前的单词为value值,存到unordered_map中
  • 4.异位词由于有相同key值的,所有在unordered_map中存储在同一个key值之下。
  • 5.最后再通过一个迭代器将每一个key值对应的存储的内容输出
  • 6.关于emplace_back的用法可以看参考zh.cppreference.com/w/cpp/conta…
// C++
class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map <string, vector<string>> mp;
        for (string str : strs){
            string key = str;
            sort(key.begin(), key.end());
            mp[key].emplace_back(str);
        }
        vector<vector<string>> ret;
        for (auto it = mp.begin(); it!=mp.end(); it++){
            ret.emplace_back(it->second);
        }
        return ret;
    }
};