From a3ae16ad96c03f1b832414f1a39e7c52dc6ab3c7 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Tue, 1 Sep 2026 15:56:02 -0400 Subject: [PATCH] feat(work): add Group Anagrams solution --- work/3/Medium/Array/49.group-anagrams.py | 66 ++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 work/3/Medium/Array/49.group-anagrams.py diff --git a/work/3/Medium/Array/49.group-anagrams.py b/work/3/Medium/Array/49.group-anagrams.py new file mode 100644 index 0000000..07678a0 --- /dev/null +++ b/work/3/Medium/Array/49.group-anagrams.py @@ -0,0 +1,66 @@ +""" +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()