来源: https://leetcode.com/problems/group-anagrams/
给定一个字符串数组,把变位词分组在一起。
<strong>Input:</strong> <code>["eat", "tea", "tan", "ate", "nat", "bat"]</code>, <strong>Output:</strong> [ ["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
本题属于哈希表类题目,想了解更多关于哈希表的题目,可以参看哈希表专题。