Open Cosen95 opened 4 years ago
字母异位词
类问题的解题核心是:当且仅当它们的排序字符串
相等时,两个字符串就是字母异位词。
针对这道题目,我们可以去维护一个哈希表hash
,其中每个键 key
是一个排序字符串
,每个值value
是初始输入的字符串列表,排序后等于 key
。
遍历数组,每次去哈希表中比对:
push
/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function(strs) {
const hash = new Map();
for (let i = 0;i < strs.length; i++) {
const str = strs[i].split('').sort().join('')
if(hash.has(str)) {
let temp = hash.get(str);
temp.push(strs[i])
hash.set(str, temp)
} else {
hash.set(str, [strs[i]])
}
}
return [...hash.values()]
};
leetcode: https://leetcode-cn.com/problems/group-anagrams/