# 字母异位词分组(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