知识点
1字符串转字符串数组
char[] c=str.toCharArray();
2如何对字符串进行排序
先将字符串转化为 字符数组
再用Array.sort(char[] c);
3如何将字符数组 转化为字符串
String str=c.toSting;//是错的 toString是字符串才有的函数
正确写法:
String str=String.valueOf(char[]);
同理,可将 字符串 转化为对应的int型数组 Integer.valueOf(String)
4HashMap中尽量不要保存 字符数组
char[] c={'a','b','c'};
System.out.println(c);
Character[] u={'w','u'};
System.out.println(u);
HashMap<Integer,Character[]> h=new HashMap<>();
h.put(3,u);
System.out.println(h.values());
保存进哈希表的是地址,可将字符数组通过String.valueOf(char[] )转化为字符串
通过下图可见,保存的是字符数组的内存地址
5对于HashMap返回value
hash.value()
源码中:
是一个集合类型
当然其他返回哈希表之后value的方法:
题意:
思路:
通过HashMap + 字符数组排序
代码:
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
//字符串转化为字符串数组 s.toCharArray();
//字符串排序 先转化为字符数组 在Arrays.sort(char[] );
HashMap<String,List> hash=new HashMap();
//String tem=null;
char[] tem=null;
List list=null;
for(int i=0;i<strs.length;i++){
tem=strs[i].toCharArray();
Arrays.sort(tem);
String ss=String.valueOf(tem);
if(hash.containsKey(ss)){
//如果已经有 那么应该加入List中
list=hash.get(ss);
list.add(strs[i]);//单独加入之后 如何加入 总的List呢
hash.put(ss,list);
//hash.put(tem,list.add(strs[i]));
}else{
list=new ArrayList();
list.add(strs[i]);
hash.put(ss,list);
}
}
return new ArrayList(hash.values());
}
}