49. Group Anagrams
Given an array of strings strs, group the anagrams together. You can return the answer in any order
ArrayExample 1:
- Input:
strs = ["eat","tea","tan","ate","nat","bat"] - Output:
[["bat"],["nat","tan"],["ate","eat","tea"]] - Explanation: There is no string in
strsthat 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^40 <= strs[i].length <= 100strs[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);
};