import java.util.*;
public class Solution {
public String[][] groupAnagrams (String[] strs) {
// write code here
//临时字符串数组
String[] temp = new String[strs.length];
HashMap<String, ArrayList<Integer>> map = new HashMap<>();
for (int i = 0; i < strs.length; i++) {
//将字符串数组中的字符串排序用于存放进map
handleString(i,strs[i],temp);
}
String s ;
ArrayList<Integer> list;
int length = 0;
//相同的字母异位词存放在一起
for (int i = 0; i < temp.length; i++) {
s = temp[i];
if (map.containsKey(s)) {
list=map.get(s);
list.add(i);
length=Math.max(length,list.size());
} else {
list = new ArrayList<>();
list.add(i);
length=Math.max(length,list.size());
map.put(s,list);
}
}
//生成结果字符串数组
String[][] result = new String[map.size()][];
//key值转换为字符串数组
String[] strings = map.keySet().toArray(new String[0]);
//存放
for (int i = 0; i < strings.length; i++) {
list=map.get(strings[i]);
result[i]=new String[list.size()];
for (int j = 0; j < list.size(); j++) {
result[i][j]=strs[list.get(j)];
}
}
return result;
}
private void handleString(int i, String str, String[] strs) {
char[] chars = str.toCharArray();
Arrays.sort(chars);
strs[i]=new String(chars);
}
}