LeetCode 力扣 热题 100道(十一)字母异位词分组(C++) ...

打印 上一主题 下一主题

主题 866|帖子 866|积分 2598

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意次序返回结果列表。
字母异位词 是由重新排列源单词的全部字母得到的一个新单词。



  • 排序字符:对于每个字符串,我们将其字符排序,得到一个唯一的 "排序后的字母" 作为该字符串的标识符(key)。
  • 使用哈希表:利用哈希表(unordered_map)来将排序后的字母作为键(key),将相同字母异位词的字符串作为值(value)。假如两个字符串排序后得到相同的结果,它们属于同一组。
  • 终极结果:哈希表中存储了多个键值对,其中每个键对应的值是一个字母异位词列表。
  1. class Solution {
  2. public:
  3.     vector<vector<string>> groupAnagrams(vector<string>& strs) {
  4.         unordered_map<string, vector<string>> anagrams;
  5.         for (const string& str : strs) {
  6.             string sorted_str = str;
  7.             sort(sorted_str.begin(), sorted_str.end());
  8.             anagrams[sorted_str].push_back(str);
  9.         }
  10.         vector<vector<string>> result;
  11.         for (auto& pair : anagrams) {
  12.             result.push_back(pair.second);
  13.         }
  14.         return result;
  15.     }
  16. };
复制代码


  • unordered_map<string, vector<string>> anagrams;:使用哈希表 anagrams 来存储字母异位词。键是排序后的字符串,值是一个包罗全部字母异位词的字符串数组。
  • 遍历每个字符串

    • 对每个字符串 str,我们创建它的副本 sorted_str。
    • 使用 sort() 函数对 sorted_str 进行排序。
    • 将排序后的 sorted_str 作为哈希表的键,原字符串 str 被添加到相应的值(即字母异位词组)中。

  • 提取结果

    • 哈希表中的每个值都是一个字母异位词的组,我们将全部这些组收集到 result 数组中并返回。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表