int n =strs.length;
int[][] count = new int[n][26];
for(int i=0;i<n;i++){
String temp = strs[i];
char[] c = temp.toCharArray();
for(int j=0;j<c.length;j++){
count[i][c[j]-'a']++;
}
}
之后只要比较这个数组的哪些行相等即可了。只要有行相等就插入给最后的链表,
boolean[] id = new boolean[n];
ArrayList<String> s = new ArrayList<String>();
for(int i=0;i<n;i++){
//只要出现过重复的就不看了
if(id[i]==true){
continue;
}
int j;
int sign =1;
s.add(strs[i]);
//查看之后的是否和目前这个相同
for(j=i+1;j<n;j++){
boolean identical = true;
for(int k=0;k<25;k++){
if(count[i][k]!=count[j][k]){
identical=false;
break;
}
}
//如果出现的字符都相同,就加入答案
if(identical == true){
s.add(strs[j]);
id[j]=true;
sign=0;
continue;
}
}
//如果没出现过,删除事先加入进去的这个
if(sign==1){
s.remove(0);
}
}
public class Solution {
public ArrayList<String> anagrams(String[] strs) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList<String> anagram = new ArrayList<String>();
HashMap<String,ArrayList<String>> list = new
HashMap<String,ArrayList<String>>();
for (String str: strs) {
char[] chars = str.toCharArray();
Arrays.sort(chars);
String key = new String(chars);
if (list.containsKey(key)) {
list.get(key).add(str);
} else {
list.put(key,new ArrayList<String>
(Arrays.asList(str)));
}
}
for (ArrayList<String> test:list.values()) {
if (test.size()>1) {
anagram.addAll(test);
}
}
return anagram;
}
}