标签:
/* * 49. Group Anagrams * 12.2 by Mingyang * 自然而然对每个string转换成char * array然后排下序, HashMap里面的key存sort后的词,value存包含那组词的一个ArrayList,这样就是一组一组的了 * 注意的就是最好装好HashMap以后要注意如何取得所有的values,如何loopthrough * ArrayList<Integer> temp : hm.values() * 这样的话就可以了 */ public List<List<String>> groupAnagrams(String[] strs) { if (strs == null) return null; ArrayList<List<String>> result = new ArrayList<List<String>>(); ArrayList<String> group = new ArrayList<String>(); if (strs.length == 0) { return result; } Arrays.sort(strs); HashMap<String, ArrayList<Integer>> hm = new HashMap<String, ArrayList<Integer>>(); for (int i = 0; i < strs.length; i++) { char[] tempCharArray = strs[i].toCharArray(); Arrays.sort(tempCharArray); String tempStr = String.valueOf(tempCharArray); if (!hm.containsKey(tempStr)) { ArrayList<Integer> tempArrayList = new ArrayList<Integer>(); tempArrayList.add(i); hm.put(tempStr, tempArrayList); } else { ArrayList<Integer> tempArrayList = hm.get(tempStr); tempArrayList.add(i); hm.put(tempStr, tempArrayList); } } for (ArrayList<Integer> temp : hm.values()) { for (Integer index : temp) group.add(strs[index]); result.add(new ArrayList<String>(group)); group = new ArrayList<String>(); } return result; }
标签:
原文地址:http://www.cnblogs.com/zmyvszk/p/5467980.html