49. Group Anagrams
按照anagrams
来组织array中的元素,sliding window
有不少这样的题,很容易想到用hash map
+ counter
,但这边hash map key
得是counter
,但counter(dict)
本身并不能被hash
,所以需要利用小写字母这个特性,以26长度的tuple
来替代dict
结构。
但其实anagrams
并不一定要用counter
来判定,sort
之后相同的string
肯定也是anagrams
,写起来简单些,代价就是把对单个string
的处理时间从O(n)变成了O(nlogn)。
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
memo = collections.defaultdict(list)
for s in strs:
freq = [0 for _ in range(26)]
for ch in s:
freq[ord(ch)-ord('a')] += 1
memo[tuple(freq)].append(s)
return memo.values()
Last updated
Was this helpful?