leetcode_gym/_problems/groupAnagrams.md
2026-08-25 19:14:07 -06:00

1.4 KiB

layout, title, last_solved, category, leetcode_url, status
layout title last_solved category leetcode_url status
page Group Anagrams 2020-07-13 hashmap https://leetcode.com/problems/group-anagrams/ Solved

Problem

Given an array of strings, group anagrams together.

Example:

Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

Solution

My solution:

{% highlight python %}

def groupAnagrams(self, strs: List[str]) -> List[List[str]]:

def sortWord(word):
    return ''.join(sorted(word))

mapping = {}
for word in strs:
    
    print(word)
    
    if sortWord(word) not in mapping:
        mapping[sortWord(word)] = [word]
    else:
        mapping[sortWord(word)] = mapping[sortWord(word)] + [word]
        
        # mapping[sortWord(word)] = mapping[sortWord(word)].append(word)
        
print(mapping)

return list(mapping.values())

{% endhighlight %}


Timonthy's More Concise Solution. Using defaultdict() so you don't have to do "if value not in" code.

{% highlight python %}

def groupAnagrams(self, strs: List[str]) -> List[List[str]]:

def sortWord(word):
    return ''.join(sorted(word))

lookup = defaultdict(list)

for word in strs:
    lookup[ sortWord(word) ].append( word )

return list(lookup.values())

{% endhighlight %}

image1