LeetCode 热题100——49.字母异位词分组

张开发
2026/4/7 22:01:16 15 分钟阅读

分享文章

LeetCode 热题100——49.字母异位词分组
题目给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 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 strs.length 10^40 strs[i].length 100strs[i]仅包含小写字母题解核心要点两个字符串是字母异位词当且仅当它们排序后的结果完全相同。例如 eat 和 tea 排序后都是 aet。算法步骤1.创建一个哈希表 unordered_mapstring, vectorstring mp键为排序后的字符串值为原始字符串的列表。2.遍历输入数组中的每个字符串 str3.复制一份到 key并对 key 进行排序。4.将原始字符串 str 加入到 mp[key] 对应的列表中。5.遍历哈希表将每个 vectorstring即一组字母异位词加入到结果 ans 中。6.返回 ans。答案class Solution { public: vectorvectorstring groupAnagrams(vectorstring strs) { unordered_mapstring,vectorstring mp; for(auto str:strs){ string keystr; sort(key.begin(),key.end());//排序后得到键 mp[key].push_back(str);//将原始字符串加入对应组 } vectorvectorstring ans; for(auto itmp.begin();it!mp.end();it){ ans.push_back(it-second); } return ans; } };

更多文章