转载

LeetCode 第49题 Group Anagrams Java

来源: 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的内容输出即可。

代码如下:

LeetCode 第49题 Group Anagrams Java

Github: https://github.com/tinyfool/leetcode/tree/master/src/p0049

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

原文  https://codechina.org/2019/08/leetcode-49-group-anagrams-java/
正文到此结束
Loading...