给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。
注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。
太简单 不解释,当然还有其他优化方法,以后再学
var isAnagram = function (s, t) {
var len1 = s.length;
var len2 = t.length;
if (len1 !== len2) {
return false;
}
var arr = new Array(26).fill(0);
for (var i = 0; i < len1; i++) {
++arr[s[i].charCodeAt() - "a".charCodeAt()];
--arr[t[i].charCodeAt() - "a".charCodeAt()];
}
return arr.every((v) => v === 0);
};
var groupAnagrams = function (strs) {
var obj = {};
var f = function (s) {
var keys = Object.keys(obj);
if (keys.length) {
var res = false;
keys.forEach((item) => {
if (isAnagram(item, s)) {
res = item;
}
});
return res;
} else {
return false;
}
};
var len = strs.length;
for (var i = 0; i < len; i++) {
var res = f(strs[i]);
if (res || res === "") {
obj[res].push(strs[i]);
} else {
obj[strs[i]] = [strs[i]];
}
}
return Object.values(obj);
};