Hash

//obj version
var groupAnagrams = function (strs) {
	const hash = {}
	for (let str of strs) {
		//sort后相同的字母组成的不同的字符串肯定是相同的
		const key = [...str].sort().toString()
		hash[key] ? hash[key].push(str) : (hash[key] = [str])
	}
	return Object.values(hash)
}

//使用计数器做key,可以去掉sort的时间复杂度 O(NK) - O(NK)
//best version
var groupAnagrams = function (strs) {
	const hash = {},
		key = new Array(26)
	for (let str of strs) {
		key.fill(0)
		for (let i = 0, len = str.length; i < len; i++) {
			key[str.charCodeAt(i) - 'a'.charCodeAt(0)]++
		}
		hash[key] ? hash[key].push(str) : (hash[key] = [str])
	}
	return Object.values(hash)
}

Last updated