package leetcode; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; public class demo_49 { public List<List<String>> groupAnagrams(String[] strs) { List<List<String>> list=new ArrayList<List<String>>(); HashMap<String, List<String>> hm=new HashMap<String, List<String>>(); for(String s:strs) { //对字符串进行排序,如果排序后的顺序一样则属于同一类 char[] ch=s.toCharArray(); Arrays.sort(ch); String s1=""; for(char c:ch) { s1=s1+c; } //如果是同一类则加入到相应的List集合中 if(hm.containsKey(s1)) { hm.get(s1).add(s); } //如果hashmap没有同一类,则创建一个新的类 else { hm.put(s1, new ArrayList<String>()); hm.get(s1).add(s); } } //将value都放到list集合中 for(String s2:hm.keySet()) { list.add(hm.get(s2)); } System.out.println(list); return list; } public static void main(String[] args) { // TODO Auto-generated method stub demo_49 d49=new demo_49(); String[] strs= {"eat", "tea", "tan", "ate", "nat", "bat"}; d49.groupAnagrams(strs); } }
原文:https://www.cnblogs.com/Yshun/p/14877812.html