【哈希】LC 49.字母异位词分组
文章目录前言一、题目1、原题链接2、题目描述二、个人思路整理1、思路分析2、解题代码三、知识风暴前言本专栏文章为《LeetCode 热题 100》的刷题题解相关内容如有侵权立即删除。一、题目1、原题链接49.字母异位词分组2、题目描述二、个人思路整理1、思路分析思路参考字母异位词分组利用哈希表的思想由于每组异位词在排序后字符串是均相等的因此可以将每组异位词排序后的字符串作为哈希表的key未排序后的原字符串作为哈希表中其对应key的value当遍历完输入字符串数组后哈希表中就已经将其分好组了最后遍历哈希表输出所有key对应的value即可。2、解题代码classSolution{public:vectorvectorstringgroupAnagrams(vectorstringstrs){unordered_mapstring,vectorstringm;for(stringstr:strs){string keystr;sort(key.begin(),key.end());//排序每个哈希key相同key的作为一组m[key].emplace_back(str);//将排序前的字符串作为value}vectorvectorstringans;for(autoiter:m){ans.push_back(iter.second);}returnans;}};三、知识风暴循环中引用传递与值传递引用传递不会发生任何拷贝速度极快在需要修改原数据时使用值传递每次循环会复制一份全新副本会极大消耗CPU时间和内存在“只想读取且数据很小如数字”时使用。.和-的区分与使用.用对象的本体或引用访问成员for(autoiter:m){ans.push_back(iter.second);}-用对象的指针或迭代器指向对象的指针访问成员。for(autoiterm.begin();iter!m.end();iter){ans.push_back(iter-second);}