[LeetCode] 49. 字母异位词分组

题目描述:

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

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

示例 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] 仅包含小写字母

题目链接:

. - 力扣(LeetCode)

解题主要思想:

其实这题跟 "判定是否互为重排字符" 有点像,但是这道题有个更好的解法,假如a和b互为重排字符,那么我们将字符串a进行排序得到的结果跟将字符串b进行排序得到的结果相同,那么我们可以借助hash,将排序后的结果作为key,将vector<string>作为value即可解题。

判定是否互为重排字符:LeetCode 面试题01.02 判定是否互为字符重拍-CSDN博客

解题代码:

复制代码
class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string, vector<string>> hash;
        for (auto& s : strs) {
            string tmp = s;
            sort(tmp.begin(), tmp.end());
            hash[tmp].push_back(s);
        }
        vector<vector<string>> ret;
        // 提取结果
        for (auto& [x,y] : hash) {
            ret.push_back(y);
        }
        return ret;
    }
};
相关推荐
lvwangshu4 分钟前
exBSGS 算法
数学·算法
不会就选b5 分钟前
算法日常・每日刷题--<贪心+大根堆>2
数据结构·算法
码艺-Alimjan7 分钟前
维吾尔语数字转文本
java·javascript·python·算法·go
AI服务老曹10 分钟前
算法任务配置完整流程:明厨亮灶项目从0到1怎么做 | AI视频分析算法实践
人工智能·算法·音视频
事圆则缓14 分钟前
Java 常见数据结构与 Android 使用场景
android·java·数据结构
hahaha601620 分钟前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
hans汉斯25 分钟前
【计算机科学与应用】基于联合熵驱动改进麻雀搜索优化VMD的DAS信号去噪方法
深度学习·算法·yolo·软件工程·汉斯出版社
词却28 分钟前
机器学习入门:手写数字识别与算法对比
人工智能·算法·机器学习
水饺编程44 分钟前
第5章,[Win32 章节] :圆角矩形教学插图绘制程序
c语言·c++·windows·visual studio
张欣-男1 小时前
3分钟理解线性代数
线性代数·算法