Skip to content
Leetcode
Esc
↑↓navigate↵open⌘Jpreview
On this page

49. Group Anagrams

Given an array of strings strs, group the anagrams together. You can return the answer in any order

Array

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.

Approach

Solution

/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
  let sorted = strs.map(str => str.split("").sort().join(""));
  let anagrams = {};

  for (let i = 0; i < strs.length; i++){
    if(!anagrams[sorted[i]]){
      anagrams[sorted[i]] = [strs[i]]
    }else{
      anagrams[sorted[i]].push(strs[i])
    }
  }

  return Object.values(anagrams);
};

Explanation

Last updated on September 24, 2026

Was this page helpful?