题目
题解
根据题目可以看到结果返回的是一个List嵌套List,又是要求“字母相同,位置不同即可为一组”
根据题意可以利用Map的key的唯一性,将字符串转为字符数组并进行排序。加入Map
排序后的字符串数再转为字符串,若其存在于key,则把key对应的List取出,并把初始字符串添加进List。然后把List放回map
若不存在,则新建一个List,将初始字符串添加进List,然后把List放回map
代码
public class Solution {
public static List<List<String>> groupAnagrams(String[] strs) {
Map<String,ArrayList<String>> ans = new HashMap<String, ArrayList<String>>();
for (String str:strs){
char[] c_str = str.toCharArray();
Arrays.sort(c_str);
String key = new String(c_str);
System.out.println(key);
ArrayList<String> temp = ans.getOrDefault(key,new ArrayList<>());
temp.add(str);
ans.put(key,temp);
}
return new ArrayList<List<String>>(ans.values());
}
}