网络异常,图片无法展示
|
题目地址(7V/">剑指 Offer II 033. 变位词组)
题目描述
给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。 注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。 示例 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] 仅包含小写字母 注意:本题与主站 49 题相同: https://leetcode-cn.com/problems/group-anagrams/
思路
先对字符串排序,然后相同的存储在同一个字典里面
代码
- 语言支持:Python3
Python3 Code:
class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: resDict = defaultdict(list) for key,val in enumerate(strs): sList = list(val) sList.sort() newS = str(sList) resDict[newS].append(val) # print(resDict) resList = [] for key,valList in resDict.items(): resList.append(valList) return resList
复杂度分析
令 n 为数组长度。
- 时间复杂度:O(n)O(n)
- 空间复杂度:O(n)O(n)