题目
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 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^41<=strs.length<=104
0 < = s t r s [ i ] . l e n g t h < = 100 0 <= strs[i].length <= 1000<=strs[i].length<=100
strs[i] 仅包含小写字母
思路
将每一个字符串排序,将排好序的字符串当作key,然后存入一个字典中。
这样做的话,对于所有的字母异位词来说就都只有一个共同的key,然后可将他们当作一组添加到答案中
复杂度
时间复杂度:
O ( n ) O(n)O(n)
空间复杂度:
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