Problem: 49. 字母异位词分组
题目
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入:
strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:
[[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [“”]
输出: [[“”]]
示例 3:
输入: strs = [“a”]
输出: [[“a”]]
提示:
1
<
=
s
t
r
s
.
l
e
n
g
t
h
<
=
1
0
4
1 <= strs.length <= 10^4
1<=strs.length<=104
0
<
=
s
t
r
s
[
i
]
.
l
e
n
g
t
h
<
=
100
0 <= strs[i].length <= 100
0<=strs[i].length<=100
strs[i] 仅包含小写字母
思路
将每一个字符串排序,将排好序的字符串当作key,然后存入一个字典中。
这样做的话,对于所有的字母异位词来说就都只有一个共同的key,然后可将他们当作一组添加到答案中
复杂度
时间复杂度:
O ( n ) O(n) O(n)文章来源地址https://www.toymoban.com/news/detail-826701.html
空间复杂度:文章来源:https://www.toymoban.com/news/detail-826701.html
O ( n ) O(n) O(n)
Code
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
dic = collections.defaultdict(list)
n = len(strs)
for i in range(n):
key = str( sorted(strs[i]) )
dic[key].append(strs[i])
ans = [i for i in dic.values()]
return ans
到了这里,关于leetcode热题100. 字母异位词分组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!