文章收录于LeetCode专栏
LeetCode地址
字母异位词分组
题目
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。所有输入均为小写字母,且不考虑答案输出的顺序。
示例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] 仅包含小写字母
排序
算法思路
异位词是由相同数量的字母根据不同顺序排序而组成的字符串,我们根据此特性可以知道只要分别对两个字符串进行排序,排序后形成的两个新字符串一定相等,所以我们可以通过对字符串进行排序后比较的方式来判断当前两个字符串是否是异位词。再识别出数组中有哪些异位词之后,可以使用一个额外的hash表将同一类异位词放hash表中,最后将其value组装返回。
编码
class Solution{
public List<List<String>> groupAnagrams(String[] strs){
Map<String, List<String>> map = new HashMap<