题目
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["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] * 26
for ch in s:
word[ord(ch) - 97] += 1
t = 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/