力扣49(java)-字母异位词分组(中等)
题目:
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = [eat, tea, tan, ate, nat, bat]
输出: [[bat],[nat,tan],[ate,eat,tea]]
示例 2:
输入: strs = []
输出: [[]]
示例 3:
输入: strs = [a]
输出: [[a]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] 仅包含小写字母
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/group-anagrams
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
哈希表:
1.首先判断特殊情况,字符串数组为空就返回一个新数组;
2.字符串数组不为空,首先创建一个哈希表,然后将不同的字符串转换成字符数组,并按照字母顺序进行排序;
3.将排序后的字符串作为哈希表中的key值,判断哈希表中是否有当前key值,若不存在,则为新的异位词语,在map中创建新的键值对,然后将该字符串放在对应key的list中;
4.将字母异位词组成的集合作为哈希表的value值,返回map中所有键值对象构成的list。
代码: