# 字母异位词分组(49)
# 题目
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
# 示例
输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["ate","eat","tea"], ["nat","tan"], ["bat"]]
# 说明
- 所有输入均为小写字母。
- 不考虑答案输出的顺序。
# 算法
# map
异位词的字母顺序不同,但是每个字母在异位词中出现的次数相同,所以我们统计每个字母出现的次数,把这个记录单词中每个字母出现次数的数组作为键
,值
是一个数组并将这个单词作为数组的一项,最后使用Object.values()
方法输出map中所有值即可
export const groupAnagrame = (strs) => {
const map = {};
strs.forEach((item) => {
const letters = new Array(26).fill(0);
Array.prototype.forEach.call(item, (letter) => letters[letter.charCodeAt() - 97]++);
map[letters] ? map[letters].push(item) : (map[letters] = [item]);
});
return Object.values(map);
};
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9