leetcode 49. group-anagrams 字母异位词分组 python3

tech2025-04-05  13

时间:2020-9-4

题目地址:https://leetcode-cn.com/problems/group-anagrams/

题目难度:Medium

题目描述:

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [   ["ate","eat","tea"],   ["nat","tan"],   ["bat"] ] 说明:

所有输入均为小写字母。 不考虑答案输出的顺序。


思路1:用哈希 + 设计映射策略

代码段1:通过

class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: dict1, res = {}, [] for str in strs: temp = ''.join(sorted(str)) if temp in dict1: dict1[temp].append(str) else: dict1[temp] = [str] for li in dict1.values(): res.append(li) return res

总结:

看了探索才有的思路,自己想估计够悬以后写完试试,看看怎么把代码写优雅一点吧 class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: dict1, res = {}, [] for str in strs: temp = ''.join(sorted(str)) if temp in dict1: dict1[temp].append(str) else: dicAt1[temp] = [str] return list(dict1.values())

思路2:使用defaultdict

代码段2:通过

class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: from collections import defaultdict lookup = defaultdict(list) for s in strs: lookup["".join(sorted(s))].append(s) return list(lookup.values())

总结:

python写了好多第三方的库,所以好优雅哇。

思路3:使用元组 + dict.get()

dict.get(key, default=None) 1. key -- 字典中要查找的键。 2. default -- 如果指定键的值不存在时,返回该默认值。

字典的键不可变,所以是元组tuple

代码段3:通过

class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: dict = {} for item in strs: key = tuple(sorted(item)) dict[key] = dict.get(key, []) + [item] return list(dict.values())

总结:

加油加油,不断积累周六要去古北水镇了,有点开心♪(^∀^●)ノ
最新回复(0)