singularity

49. Group anagrams

O(n)

let strs = ["eat","tea","tan","ate","nat","bat"]

var groupAnagrams = function(strs) {
    let hashmap = {}
    for (let s of strs){
        let i = Object.keys(hashmap).indexOf(s.split('').sort());
        let key = s.split('').sort();
        hashmap[key]?hashmap[key].push(s):hashmap[key]=[s];
    }
    return Object.values(hashmap);
};

console.log(groupAnagrams(strs));

from collections import defaultdict

def groupAnagrams(strs):
	hashmap = defaultdict(list)	
	for s in strs:
		# keys can be strings, bcz they are immutable.
		hashmap[str(sorted(s))].append(s) 
	return hashmap.values()

print(groupAnagrams(["eat","tea","tan","ate","nat","bat"]))