# Links

Go to my solution

Go to the question on LeetCode

# My Thoughts

**What Went Well**

I knew that all anagrams contain the same characters, so I implemented an approach using this attribute.

I sorted each word, and using the sorted characters of that word allowed me to have a key that would access all anagrams.

# Data Structure Description

**Hash Map (Dictionary) -** A data structure that stores a collection of keys, each to their respective values. Each key may only appear once.

# Solution Statistics

**Time Spent Coding**

5 minutes

**Time Complexity**

O(n * k) - The number of strings in `strs`

is n, and the largest string in `strs`

is of length k. Assuming the previous values of n and k, we must iterate through all strings in `strs`

and each character in each of the strings in `strs`

, resulting in the O(n * k) time complexity. Technically we are iterating through each stings characters twice, but since big O “ignores” constant multiples, the time complexity does not change.

**Space Complexity**

O(n) - We will never store more values or keys in the dictionary than elements in the `strs`

list, resulting in the O(n) space complexity.

**Runtime Beats**

86.24% of other submissions

**Memory Beats**

97.57% of other sumbissions

# Solution

1
2
3
4
5
6
7
8
9
10
11
12
13

class Solution(object):
def groupAnagrams(self, strs):
dic = {}
for s in strs:
cur = "".join(sorted(s))
if cur in dic:
dic[cur].append(s)
else:
dic[cur] = [s]
return dic.values()