思路:使用排序的方法,异位词字符串包含的字母是相同的,所以字母经过排序后都是一样的。可以使用一个hashmap,key为排序过后的字符串,值为列表,这样的话通过遍历字符串,直接往当前字符串排序过后的key里面添加当前字符串列表就行了。
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String,List<String>> map = new HashMap<>();
for(String str : strs){
//将字符串转化为char数据才能进行排序
char[] array = str.toCharArray();
//直接调用Arrays的静态方法sort即可进行排序
Arrays.sort(array);
//将char数组转为字符串,作为key
String key = new String(array);
//通过key获取字符串列表,没有则创建
List<String> list = map.getOrDefault(key,new ArrayList<String>());
//将当前字符串添加到列表中
list.add(str);
//添加到map
map.put(key,list);
}
return new ArrayList<List<String>>(map.values());
}
}