【LeetCode】LeetCode 记录贴--字母异位词分组
2026/6/25 13:38:10 网站建设 项目流程

【LeetCode】LeetCode 记录贴--字母异位词分组题

  • 题目
  • 我的解题方法:
    • 我的解题思路:
    • 解题代码:

题目

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
示例 1

输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]

输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]

解释:
在 strs 中没有字符串可以通过重新排列来形成 “bat”。
字符串 “nat” 和 “tan” 是字母异位词,因为它们可以重新排列以形成彼此。
字符串 “ate” ,“eat” 和 “tea” 是字母异位词,因为它们可以重新排列以形成彼此。

示例 2:

输入: strs = [“”]

输出: [[“”]]

示例 3:

输入: strs = [“a”]

输出: [[“a”]]

提示:

1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] 仅包含小写字母

我的解题方法:

我的解题思路:

使用哈希表记录异位词,那么区分字母异位词的方式有两种:

  1. 将单词字母排序,所有异位词排序后的结果是一样的

  2. 统计单词出现次数,所有异位词的单词出现次数是一样的,将结果转化为一个字符串作为键值

复杂度

  • 时间复杂度: 𝑂(𝑛𝑘),𝑘 是字符串长度,排序的话𝑂(𝑛𝑘𝑙𝑜𝑔𝐾)
  • 空间复杂度: 𝑂(𝑛𝑘), 𝑛个字符串,每个字符串长度为𝑘,一共占据哈希表
    𝑂(𝑛𝑘)个空间

解题代码:

functiongroupAnagrams(strs:string[]):string[][]{constwords=newMap<string,string[]>();strs.map((str)=>{constarr=Array.from(str);arr.sort();constnewStr=arr.toString();letanagrams=words.get(newStr);if(!anagrams){anagrams=[str];words.set(newStr,anagrams);}else{anagrams.push(str);}});return[...words.values()];};

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询