「每日LeetCode」2022年12月8日
本文最后更新于:2023年3月19日 晚上
49.字母异位词分组
49.字母异位词分组
Category | Difficulty | Likes | Dislikes |
---|---|---|---|
algorithms | Medium (67.72%) | 1328 | - |
Tags
Companies
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,”tan”],[“ate”,”eat”,”tea”]]
示例 2:
输入: strs = [“”] 输出: [[“”]]
示例 3:
输入: strs = [“a”] 输出: [[“a”]]
提示:
- 1 <= strs.length <= 104
- 0 <= strs[i].length <= 100
- strs[i] 仅包含小写字母
思路
首先,它声明了一个名为 map 的对象,用来存储分组信息。然后,它遍历字符串数组中的每个字符串。对于每个字符串,它会将字符串中的每个字符按字母顺序排序,然后将排序后的字符串作为键值存储到 map 对象中。如果该键值对应的键已存在,则它会将该字符串添加到对应的分组中。否则,它会新建一个分组,并将该字符串添加到新分组中。
最后,它将 map 对象中的所有分组作为数组返回。
解题的要点在于将给定字符串数组中的所有字谜分在同一组。为了做到这一点,需要对每个字符串进行排序,然后将排序后的字符串作为键值存储到对象中,根据排序后的字符串来分组。例如,如果有两个字符串 “eat” 和 “tea”,它们在排序后都为 “aet”,因此它们属于同一组。
解答
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!