题目要求
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
示例 1:
输入: strs = "eat", "tea", "tan", "ate", "nat", "bat"
输出: \["bat","nat","tan","ate","eat","tea"]
解题思路
可以利用java中字符数组所自带的排序方法,题目中要求将字母异位词组合,即单词不同,但单词中所含字母均相同,利用排序方法就可以将字符串数组中的字母异位词筛选出来,利用哈希表来进行接受。
由于哈希表有键值一一对应的要求,可以利用排序后的字符串来作为键,将原字符串数组中的字母异位词分别作为值,最后利用哈希表的调出所有值的方法,生成一个集合,在返回这个集合,该集合就是题目要求的结果。
代码实现
java
import java.util.*;
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String,List<String>> map = new HashMap();
for(int i=0;i<strs.length;i++){
String word=strs[i];
char[] charArr=word.toCharArray();
Arrays.sort(charArr);
String key=new String(charArr);
if(!map.containsKey(key)){
map.put(key,new ArrayList<>());
}
map.get(key).add(word);
}
return new ArrayList<>(map.values());
}
}