Group Anagram. (DSA Series 2)
OlumideSamuel
Posted on May 15, 2022
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
- Input: strs = ["eat","tea","tan","ate","nat","bat"]
- Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
- Input: strs = [""]
- Output: [[""]]
- Input: strs = ["a"]
- Output: [["a"]] */
Solution
/**
* for each item in array, sort alphabetically, then add sorted item to map as key, push index to value array eg; {aet:[0,1,3], ...}
* return values of every word(key) in the map as an array.
* Time Complexity is O(n)... I think. _Not sure if the sorting of each word takes an additional O(n)_
*/
function groupAnagram(arr){
const map = {}
for(let i = 0; i < arr.length; i++) {
const sortedWord = [...arr[i] ].sort((a,b)=> a.localeCompare(b)).join();
map[sortedWord] = map[sortedWord] !== undefined ? [...map[sortedWord], arr[i]] : [arr[i]]
}
return Object.values(map);
}
Anyway, if you have a better way of solving this, you can drop your solution in the comments. I'm no expert. Just learning aloud.
Don't forget to like, share and drop a comment. :)
💖 💪 🙅 🚩
OlumideSamuel
Posted on May 15, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
datastructures DSA with JS: Understanding Custom Array Data Structure in JavaScript - A Step-by-Step Guide
September 29, 2024
datastructures Discovering JavaScript's Hidden Secrets: Understanding Linked List as Data Structures.
April 25, 2024