【哈希】LC 49.字母异位词分组

文章目录

前言

本专栏文章为《LeetCode 热题 100》的刷题题解,相关内容如有侵权,立即删除。

一、题目

1、原题链接

49.字母异位词分组

2、题目描述

二、个人思路整理

1、思路分析

思路参考字母异位词分组

利用哈希表的思想:由于每组异位词在排序后字符串是均相等的,因此可以将每组异位词排序后的字符串作为哈希表的key,未排序后的原字符串作为哈希表中其对应keyvalue,当遍历完输入字符串数组后,哈希表中就已经将其分好组了,最后遍历哈希表输出所有key对应的value即可。

2、解题代码

cpp 复制代码
class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string, vector<string>> m;  
        for(string& str: strs) {
            string key = str;     
            sort(key.begin(), key.end());  //排序每个哈希key,相同key的作为一组
            m[key].emplace_back(str); //将排序前的字符串作为value
        }
        vector<vector<string>> ans;
        for(auto iter: m) {
            ans.push_back(iter.second);
        }
        return ans;
    }
};

三、知识风暴

  1. 循环中&引用传递与值传递
  • &引用传递:不会发生任何拷贝,速度极快,在需要修改原数据时使用;
  • 值传递:每次循环会复制一份全新副本,会极大消耗CPU时间和内存,在"只想读取,且数据很小(如数字)"时使用。
  1. .->的区分与使用
  • .:用对象的本体引用访问成员;
cpp 复制代码
for (auto iter : m) {
    ans.push_back(iter.second); 
}
  • ->:用对象的指针迭代器(指向对象的指针)访问成员。
cpp 复制代码
for (auto iter = m.begin(); iter != m.end(); iter++) {
    ans.push_back(iter->second); 
}
相关推荐
Asize6 小时前
146. LRU 缓存
算法
Asize6 小时前
543. 二叉树的直径
算法
lemon_sjdk6 小时前
ObjectProperty
java·开发语言·算法
Zentceh6 小时前
AI-ISP在夜视机芯中的应用:从传统ISP到PixelClean全彩夜视的进化
人工智能·科技·算法·计算机视觉·车载系统·视频·智能硬件
xier_ran7 小时前
【infra之路】AWQ 详解:激活感知权重保护,让 W4A16 量化精度超越 GPTQ
线性代数·算法·机器学习·量化·infra
亦皓ai7 小时前
AI时代后端工程(二):AI把代码写得越来越快,我却越来越不敢让它直接开工了
人工智能·算法·机器学习·搜索引擎·transformer
网安蟹佬霸8 小时前
# 网络流量分析实战:从Wireshark到入侵检测系统构建(2026最新版,附完整流量分析链与IDS规则集)
网络·测试工具·安全·开源·wireshark·密码学·哈希算法
玖玥拾8 小时前
LeetCode 392 判断子序列
笔记·算法·leetcode
重生之后端学习10 小时前
239. 滑动窗口最大值[困难]✅
java·数据结构·算法·leetcode·职场和发展
fpcc10 小时前
算法和数据结构—动态规划法
数据结构·算法·动态规划