Files

67 lines
1.4 KiB
Python
Raw Permalink Normal View History

2026-09-01 15:56:02 -04:00
"""
49. Group Anagrams
Difficulty: Medium
https://leetcode.com/problems/group-anagrams/
──────────────────────────────────────────────────
Given an array of strings strs, group the anagrams together. You can
return the answer in any order.
Example 1:
Input: strs = ["eat","tea","tan","ate","nat","bat"]
Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
Explanation:
• There is no string in strs that can be rearranged to form "bat".
• The strings "nat" and "tan" are anagrams as they can be rearranged
to form each other.
• The strings "ate", "eat", and "tea" are anagrams as they can be
rearranged to form each other.
Example 2:
Input: strs = [""]
Output: [[""]]
Example 3:
Input: strs = ["a"]
Output: [["a"]]
Constraints:
• 1 <= strs.length <= 10^4
• 0 <= strs[i].length <= 100
• strs[i] consists of lowercase English letters.
"""
from collections import defaultdict
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
if not strs:
return strs
res = defaultdict(list)
for s in strs:
count = [0] * 26
for c in s:
count[ord(c) - ord("a")] += 1
res[tuple(count)].append(s)
return res.values()