49. 字母异位词分组

1.题目介绍

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

输入: strs = [""]
输出: [[""]]

示例 3:

输入: strs = ["a"]
输出: [["a"]]

提示:

  • 1<=strs.length<=104
  • 0<=strs[i].length<=100
  • strs[i] 仅包含小写字母

2.题解

2.1 哈希表

这里的思路主要是用哈希表存储一个映射键值,能够映射到所有的字母异位词,这里采用的映射方法为排序,采用排序后的字符串作为映射键值
每遍历一个数据,就映射出其哈希键值,并存储到哈希表中,最后遍历哈希表,的到所需数组。
这里要注意的一个是mp[key].emplace(str); 这里的mp[key]表示的是一个vector<string,>使用的也是vector的emplace的方法
不要使用mp.emplace(key,str);或者mp.emplace(make_pair<string,vector>(key,str)); 类似这种错误方法(前面一种根本就是错误写法),因为你一次无法直接获得整个vector

代码

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string, vector<string>> mp;
        for (auto str: strs){
            string key = str;
            sort(key.begin(),key.end());
            mp[key].emplace(str);
        }
        vector<vector<string>> gpAn;
        for (auto it = mp.begin(); it != mp.end(); it++){
            gpAn.emplace_back(it->second);
        }
        return gpAn;
    }
};

2.2

posted @   DawnTraveler  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示