来源:https://leetcode.com/problems/group-anagrams/
题目:变位词分组
给定一个字符串数组,把变位词分组在一起。
例如:
Input: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
注意:
- 全部输入都是小写的。
- 输出结果的顺序无所谓。
所谓变位词就是字符都一样,但是排列顺序不一样的字符串,比如”ate”,”eat”和”tea”。去掉变位词这个要求的话,这道题其实就是把重复的字符串分组在一起的思路。
首先我们怎么判断变位词,在这里我们需要统计不同的组的变位词的数量和具体形式。所以我的思路是,首先把变位词的字符排序,这样同一组变位词都可以统一到同一个形式。这就可以作为Hash-map的key,然后,我们value用一个list来保存不同的变位词形式。这样一边循环做统计,然后把Hash-map的内容输出即可。
代码如下:

Github:https://github.com/tinyfool/leetcode/tree/master/src/p0049
本题属于哈希表类题目,想了解更多关于哈希表的题目,可以参看哈希表专题。