Solution
public class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> list = new ArrayList<>();
if (strs == null || strs.length == 0) return list;
boolean[] table = new boolean[strs.length];
for (int i = 0; i < strs.length; i++) {
if (!table[i]) {
List<String> tmp = new ArrayList<>();
for (int j = 0; j < strs.length; j++) {
if (!table[j]) {
if (isAnagrams(strs[i], strs[j])) {
tmp.add(strs[j]);
table[j] = true;
}
}
}
list.add(tmp);
}
}
return list;
}
public boolean isAnagrams(String a, String b) {
if (a.length() != b.length()) return false;
int[] table = new int[26];
for (int i = 0; i < a.length(); i++) {
table[a.charAt(i) - 'a']++;
table[b.charAt(i) - 'a']--;
}
for (int x : table) {
if (x != 0) return false;
}
return true;
}
}
Problem#1
* 时间复杂度太高
* 考虑排序