-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgroup_anagrams.py
More file actions
67 lines (46 loc) · 1.71 KB
/
group_anagrams.py
File metadata and controls
67 lines (46 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""
49. Group Anagrams
Difficulty:Medium
Given an array of strings strs, group the anagrams together. You can return the answer in any order.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Example 1:
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Example 2:
Input: strs = [""]
Output: [[""]]
Example 3:
Input: strs = ["a"]
Output: [["a"]]
Constraints:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] consists of lowercase English letters.
"""
from typing import List
import collections
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
hash_table = {}
for word in strs:
new_word = "".join(sorted(word))
if new_word in hash_table.keys():
hash_table[new_word].append(word)
else:
hash_table[new_word] = [word]
return hash_table.values()
def groupAnagrams2(self, strs: List[str]) -> List[List[str]]:
anagrams = collections.defaultdict(list)
for word in strs:
anagrams["".join(sorted(word))].append(word)
return list(anagrams.values())
if __name__ == "__main__":
solution = Solution()
print(
solution.groupAnagrams(strs=["eat", "tea", "tan", "ate", "nat", "bat"])
) # [["bat"],["nat","tan"],["ate","eat","tea"]]
print(
solution.groupAnagrams2(strs=["eat", "tea", "tan", "ate", "nat", "bat"])
) # [["bat"],["nat","tan"],["ate","eat","tea"]]
# print(solution.groupAnagrams(strs=[""])) # [[""]]
# print(solution.groupAnagrams(strs=["a"])) # [["a"]]