Group Anagrams
Problem
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
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function(strs) {
const map = {};
for (s of strs) {
const key = s.split("").sort().join("");
if (!(key in map)) {
map[key] = [];
}
map[key].push(s);
}
return Object.values(map);
};
Iterate through all the strings in strs
and store them in map
using their sorted value as the key (note that if two strings are anagrams of each other, their sorted value must be the same).