Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. Show Tags 思路:Every anagrams have the same sorted character arrays. So, we create a hashmap to storage and the key is sorted character array and the value is anagrams list. At last, we use iterator to add list to the result. 易错点: 添加进 map 时候, 注意 list 是否已经创建。 还有 最后 如果有anagram list.size() > 1 才能添加入结果。 public class Solution { public List<String> anagrams(String[] strs) { List<String> ret = new ArrayList<String>(); if(strs.length < 1) return ret; HashMap<String, List<String>> map = new HashMap<String, List<String>>(); for(String s : strs){ char[] arr = s.toCharArray(); Arrays.sort(arr); String key = new String(arr); if(map.containsKey(key)){ List<String> list = map.get(key); list.add(s); }else{ List<String> list = new ArrayList<String>(); list.add(s); map.put(key, list); } } Iterator<String> it = map.keySet().iterator(); while(it.hasNext()){ List<String> list = map.get(it.next()); if(list.size() > 1) ret.addAll(list); } return ret; } }