Group Anagrams

Asked byAmazonMicrosoftFacebookAppleJPMorganBlackRock

Problem

Given an array of strings, group the strings that are anagrams of each other into separate lists, and return the list of groups in any order.

Examples

Example 1
Input:strs = ["eat","tea","tan","ate","nat","bat"]
Output:[["eat","tea","ate"],["tan","nat"],["bat"]]
Example 2
Input:strs = [""]
Output:[[""]]

Constraints

  • 1 <= strs.length <= 10^4
  • strs[i] consists of lowercase English letters only.

Solve it in the editor. Sign in free to run your Python or JavaScript against test cases, get a verdict, and track your attempts.

Solve on FeatCode →

How to approach it: the Arrays & Hashing pattern

Arrays give O(1) index access; hash maps and sets give O(1) average lookup, insert, and delete by trading space for speed. Together they're the toolkit for turning brute-force O(n²) comparisons into a single O(n) pass.

Look for this pattern when

  • You need to check "have I seen this value before?" quickly.
  • You're counting occurrences or grouping items by a derived key (e.g. sorted letters for anagrams).
  • A nested loop is comparing every pair — a hash map can often replace the inner loop.

Read the full Arrays & Hashing guide →

Video walkthroughs

Original problem on LeetCode ↗

More Arrays & Hashing problems