力扣Hot100--哈希表--day01
一,字母异位词分组

解题思路
给出的数组如下
["eat", "tea", "tan", "ate", "nat", "bat"]
按异位词分组后如下:
["eat","tea","ate"]
["tan","nat"]
["bat"]
看到这个例子,是不是首先要进行分组
分组的话要有分组的前提
我们先找到他们分完组后的共同点
我们发现他们排完序后都有唯一对应的值,如下:
["eat","tea","ate"]-->aet
["tan","nat"]-->ant
["bat"]-->abt
在看返回的结过,由上可知,每个数组都有唯一的值对应,那么很容易就可以想到,哈希表
key对应的是排序后的结果
代码
class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>> result = new HashMap<>();for(String str: strs){char[] array = str.toCharArray();Arrays.sort(array);String key = new String(array);if(!result.containsKey(key)){result.put(key,new ArrayList<>());}list.add(str);result.put(key,list);}return new ArrayList<List<String>>(result.values());}
}首先用到哈希表,所以要创建哈希表
然后就要将数组里面的字符串进行排序了
那么要获取数组里面的每个字符串,先遍历出来
然后获取里面的每个字符进行排序
排完序后要当key吗,所以要拿个变量存储起来
获取当前key对应的列表,没有就创建
把当前字符加入列表
更新map中的列表
