LeetCode 第49题 Group Anagrams Java

来源: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

本题属于哈希表类题目,想了解更多关于哈希表的题目,可以参看哈希表专题

打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据