题目描述:
思路:其实大家可以想想如果是int类型的数组,我们会怎么做,估计有不少小伙伴,脱口而出,遍历出来,直接进行排序,再分组;但为什么String类型的数组,咱们不可以去排序分组呢,哈哈哈这么一想大家是不是有种豁然开朗的感觉,我们只需要str.toCharArray() 把字符串变成字符数组,不就可以排序了,排序完再进行分组,至于分组就可以用Map集合来实现;
来看看代码:
public List<List<String>> groupAnagrams(String[] strs) {
if (strs.length <1) return new ArrayList<>();
Map<String,List<String>> map = new HashMap<>();
for (String str : strs) {
char[] chars = str.toCharArray();
Arrays.sort(chars);
if (!map.containsKey(String.valueOf(chars)))
map.put(String.valueOf(chars),new ArrayList<>());
map.get(String.valueOf(chars)).add(str);
}
return new ArrayList<>(map.values());
}
总结:第一次看到这题,我也陷入一个困境 ,有点无从下手的感觉,哥们也是第一次看到这种题,有点想硬算,去暴力匹配,但一想这种方法肯定超时;也是看的题解才有的思路哈哈哈,大家有时候算法解不出来适当看看题解,也是可以帮助自己思考的!