对字符串对象进行分组,相同字母组成的字符串,排序出来的值肯定是一样的,然后以这个值为key,存放对应的相同字母拼接成的字符串数组
public class GroupAnagrams {
public static List<List<String>> groupAnagrams(String[] strs) {
if (strs.length == 0) return new ArrayList();
Map<String, List> ans = new HashMap<String, List>();
for (String s : strs) {
char[] ca = s.toCharArray();
Arrays.sort(ca);
String key = String.valueOf(ca);
if (!ans.containsKey(key)) ans.put(key, new ArrayList());
ans.get(key).add(s);
}
return new ArrayList(ans.values());
}
public static void main(String []args){
String [] strs = new String[]{"eat", "tea", "tan", "ate", "nat", "bat"};
groupAnagrams(strs);
}
}