Neetcode 150 - Group Anagrams
1. Sorting
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
res = defaultdict(list) # list map with array
for s in strs:
sortedS = ''.join(sorted(s))
res[sortedS].append(s)
return list(res.values())
-
Time complexity: O(M * NlogN)
-
Space complexity: O(M * N).
2. Hash Table (Array)
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
res = defaultdict(list)
for s in strs:
# each new item, reset count
count = [0] * 26
# Use 26 items as order
for c in s:
count[ord(c) - ord('a')] += 1
res[tuple(count)].append(s)
return list(res.values())
-
Time complexity: O(M * N).
-
Space Complexity: O(M * N) space for output list.
Last Updated On October 22, 2025