超出时间限制:依次遍历数组中每一个字符串,与list中每一个templist中的第一个进行对比,如果长度不相等即为不合格,如果list走到了结尾,字符串肯定不包含与list中,添加成为list中新的一员。,如果与templist中一样则为添加为templist中一员
但是超出时间限制
public List<List<String>> groupAnagrams(String[] strs) {
ArrayList<List<String>> list = new ArrayList<List<String>>();
if(strs.length==0) return list;
ArrayList<String> temp = new ArrayList<String>();
temp.add(strs[0]);
list.add(temp);
if(strs.length==1) return list;
for (int i = 1; i < strs.length; i++) {
judgeAnagrams(list,strs[i]);
}
return list;
}
//new String[]{"tea","and","ate","eat","den"}
private void judgeAnagrams(ArrayList<List<String>> list,String s){
int i=0;
for(i=0;i<list.size();i++){
String str = list.get(i).get(0);
if(str.length()==s.length()){
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (int j = 0; j < str.length(); j++) {
map.put(str.charAt(j), map.getOrDefault(str.charAt(j), 0)+1);
}
int x=0;
for(x=0;x<s.length();x++){
if(map.containsKey(s.charAt(x))&&map.get(s.charAt(x))!=0){
map.put(s.charAt(x), map.get(s.charAt(x))-1);
}else{
//不符合
break;
}
}
if(x==s.length()){
List<String> ll = list.get(i);
ll.add(s);
list.set(i,ll);
break;
}
}
}
if(i==list.size()){
List<String> temp = new ArrayList<String>();
temp.add(s);
list.add(temp);
}
}