【每日一题】LeetCode 49. 字母异位词分组 TypeScript

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

示例 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] 仅包含小写字母

核心思路:

①把每个字符串分割、排序、合并成字符串;

②同样字母组合的字符串作为键,不同的str作为值;

③获取map的值。
难点:

如何把字符串分割排序后合并 str.split('').sort().join('')

如何获得哈希表里的所有value,并以数组的形式返回 Array.from(map.values())或...map.values()

TypeScript 复制代码
function groupAnagrams(strs: string[]): string[][] {
   const map = new Map<string,string[]>()
   for(const str of strs){
    const item = str.split('').sort().join('')
    if(!map.has(item)){
        map.set(item,[])
    }
    map.get(item).push(str)
   }
   return [...map.values()]
};

共勉