-
2.5
- 忘记了用 map 来存储模板和 list 字符串
- 忘了 map。getvalues()就是取出 map 的全部value
-
1.22
- 忘记 getOrDefault 的用法了、
- 最后 return 的时候是 ArrayList<…>(…)
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String,List<String>> map = new HashMap<>();
for(int i=0;i<strs.length;i++){
//先取出排序再放回去
String s = strs[i];
char[] ch = s.toCharArray();
Arrays.sort(ch);
String s2 = Arrays.toString(ch);
//在 getOrDefault 取出 lsit
List<String> list = map.getOrDefault(s2,new ArrayList<>());
list.add(s);
map.put(s2,list);
}
return new ArrayList<List<String>>(map.values());
}
}给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
12.20
- api 有点多,看下面 总结吧
- 要求掌握:string 变 char 数组,char 数组的排序,在变回 str还有一个 Arrays 的工具类
- hashmap 的 getOrDefalut 用法
- 返回一个 List<List<String>>的(map.values() )
- Java 的 API 允许你直接用一个集合(这里是
map.values())来初始化另一个集合(这里是ArrayList)。它会自动处理所有的迭代和拷贝工作,包含了所有的 Keys 下对应的 Values,这就是为什么一行代码就能搞定。
- Java 的 API 允许你直接用一个集合(这里是
- 关于 toString 的用法能用 (有重写):StringBuilder、ArrayList、HashMap、Integer、以及你自己写了
public String toString() {...}的类。
- 不能用 (用默认):所有的数组 (
char[],int[],String[]等)。
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
// List<List<String>> res = new ArrayList<>();
Map<String,List<String>> map = new HashMap<>();
for(String str :strs){
char[] charList = str.toCharArray();
Arrays.sort(charList);
// String string = charList.toString();
String string = new String(charList);
List<String> list = map.getOrDefault(string,new ArrayList<>());
list.add(str);
map.put(string,list);
}
return new ArrayList<List<String>> (map.values());
}
}知识点
-
创建
Map<String,List<String>> map = new HashMap<String,List<Sting>> -
使用str.toCharList方法(字符串转为字符串数组)
-
创建char[]字符串数组
-
使用Arrays.sort()工具类方法
-
map.getOrDefault(key,默认值)的工具类方法使用:返回map中值为key的列表如果不存在,返回设置的默认值
-
list.add()方法
-
map.put方法
-
`
// 返回Map中所有值的集合,即所有字母异位词组的列表 return new ArrayList<List<String>>(map.values());
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
// 创建一个HashMap,用于存储每个字母异位词组的键和对应的字符串列表
Map<String, List<String>> map = new HashMap<String, List<String>>();
// 遍历输入的字符串数组
for (String str : strs) {
// 将字符串转换为字符数组
char[] array = str.toCharArray();
// 对字符数组进行排序
Arrays.sort(array);
// 将排序后的字符数组转换回字符串,作为键
String key = new String(array);
// 从Map中获取与键关联的列表,如果不存在则创建一个新的列表
List<String> list = map.getOrDefault(key, new ArrayList<String>());
// 将当前字符串添加到列表中
list.add(str);
// 将更新后的列表放回Map中
map.put(key, list);
}
// 返回Map中所有值的集合,即所有字母异位词组的列表
return new ArrayList<List<String>>(map.values());
}
}