题目:字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""]
输出: [[""]]
思路:
- 思路:遍历字符串数组,将字符串数组中每个元素转换为字符数组,通过Arrays.sort方法进行排序
- 创建一个满足条件的map集合 key是排序后的字符数组中的元素,通过map.getOrDefault方法,判断是否有相同的key值
- 如果没有,就存入一个新的ArrayList集合中,有key就存入key对应的list集合中
public static List<List<String>> groupAnagrams(String[] strs) {
// 定义一个满足条件的map集合
Map<String ,List<List<String>>> map = new HashMap<>();
for(String str: strs) {
char [] ch = str.toCharArray();
// 将字符串进行排序
Arrays.sort(ch);
String key = new String(ch);
List list = map.getOrDefault(key,new ArrayList<>());
list.add(str);
map.put(key,list);
}
return new ArrayList(map.values());
}
数组与map集合的遍历方式
map集合的遍历方式(jdk8)
map.forEach((k,v)->{})
数组的遍历
String [] strs = new String[2];
for(String str : strs) {};