题目
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:[["ate","eat","tea"],["nat","tan"],["bat"]]
说明:
class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:d = {} # key 为字符元祖,每个位置代表一个字符,value 为对应的词列表for s in strs:word = [0] * 26for ch in s:word[ord(ch) - 97] += 1t = tuple(word)if t not in d:d[t] = []d[t].append(s)return [value for value in d.values()]
class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:ans = collections.defaultdict(list)for s in strs:ans[tuple(sorted(s))].append(s)return list(ans.values())
方案二(使用排序后的字符串作为键)
class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:t_dict={}for t_str in strs:sort_str=self.hashMapFun(t_str)if sort_str not in t_dict:t_dict[sort_str] = []t_dict[sort_str].append(t_str)return list(t_dict.values())def hashMapFun(self,strings):return "".join(sorted(list(strings)))
原文
https://leetcode-cn.com/explore/orignial/card/all-about-lockup-table/239/learn-to-use-keys/999/
