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