2 字母异位词分组

发布时间:2026/7/18 12:12:08
2 字母异位词分组 给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 1: 输入:strs [eat, tea, tan, ate, nat, bat]输出:[[bat],[nat,tan],[ate,eat,tea]]解释在 strs 中没有字符串可以通过重新排列来形成bat。字符串nat和tan是字母异位词因为它们可以重新排列以形成彼此。字符串ateeat和tea是字母异位词因为它们可以重新排列以形成彼此。示例 2: 输入:strs []输出:[[]]示例 3: 输入:strs [a]输出:[[a]]方法1哈希表1、创建哈希表unordered_mapstring,vectorstring hash。2、循环遍历vectorstring strs,对strs[i]进行排序排序后的字符作为哈希表的key其原始值作为哈希表的value插入哈希表中。3、每一个strs[i]排序后查找到对应的key插入其value中4、循环结束把哈希表转换成vectorvectorstringreturn函数class Solution { public: vectorvectorstring groupAnagrams(vectorstring strs) { unordered_mapstring,vectorstring hashMap; for(int i0;istrs.size();i){ string str_temstrs[i]; sort(str_tem.begin(),str_tem.end()); auto ithashMap.find(str_tem); if(ithashMap.end()){ hashMap[str_tem].emplace_back(strs[i]); } else{ (it-second).push_back(strs[i]); } } vectorvectorstring res; for (auto it hashMap.begin(); it ! hashMap.end(); it){ res.push_back(it-second); } return res; } };vector 容器C 中的 vector 是一种序列容器可以运行时动态地插入和删除元素。vector 是基于数组的数据结构可以自动管理内存不需要手动分配和释放内存。vector 是 C 标准模板库STL的一部分提供了灵活的接口和高效的操作。基本特性:动态大小vector的大小可以根据需要自动增长和缩小。连续存储vector中的元素在内存中是连续存储的这使得访问元素非常快速。可迭代vector可以被迭代你可以使用循环如for循环来访问它的元素。元素类型vector可以存储任何类型的元素包括内置类型、对象、指针等。创建 Vectorstd::vectorint myVector; // 创建一个存储整数的空 vector std::vectorint myVector(5); // 创建一个包含 5 个整数的 vector每个值都为默认值0 std::vectorint myVector(5, 10); // 创建一个包含 5 个整数的 vector每个值都为 10vector常见函数函数作用bool empty() const判断容器是否为空capacity();容器的容量size();返回容器中元素的个数front();返回容器中第一个数据元素back();返回容器中最后一个数据元素swap(vec);将vec与本身的元素互换pop_back()删除最后一个元素erase(const_iterator pos)删除迭代器指向的元素myVector.erase(const_iterator start, const iterator end)删除迭代器从start到end之间的元素clear()删除容器中所有的元素