# 49.group-anagrams

## Statement

• Difficulty: Medium
• Tag: `哈希表` `字符串` `排序`

``````输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]

``````输入: strs = [""]

``````

``````输入: strs = ["a"]

• `1 <= strs.length <= 104`
• `0 <= strs[i].length <= 100`
• `strs[i]` 仅包含小写字母

• Difficulty: Medium
• Tag: `Hash Table` `String` `Sorting`

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.

## Solution

``````from typing import List

class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
m = {}
for s in strs:
k = "".join(sorted(s))
try:
m[k].append(s)
except KeyError:
m[k] = [s]

return list(m.values())

if __name__ == "__main__":
s = Solution()

ans = s.groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"])

print(ans)
``````