Leecode刷题笔记——49. 字母异位词分组
开始刷题,记录一下!!!!!!!!!
题目:
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""] 输出: [[""]]
示例 3:
输入: strs = ["a"] 输出: [["a"]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i]
仅包含小写字母
解题:
public static void main(String[] args) {
String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};
//定义一个map存集合
HashMap<String, List<String>> map = new HashMap<>();
for (int i = 0; i < strs.length; i++) {
//1、取出数组中的字符串,用toCharArray() 方法将字符串转换为字符数组
char[] temp = strs[i].toCharArray();
System.out.println("1=" + Arrays.toString(temp));
//2、字符数组数字排序(排序后的字符数组转成字符串当做map的key)
Arrays.sort(temp);
System.out.println("2=" + Arrays.toString(temp));
//3、用getOrDefault(Object key, V defaultValue)取出key对应的异位词集合
//意思就是当Map集合中有这个key时,就使用这个key对应的value值,如果没有就使用默认值defaultValue
List<String> list = map.getOrDefault(new String(temp), new ArrayList<>());
System.out.println("list1=" + list);
//4、把未重新排序的原字符串 存入key对应的异位词集合中
list.add(strs[i]);
System.out.println("list2=" + list);
map.put(new String(temp), list);
System.out.println(new ArrayList<>(map.values()));
}
}