Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
---
public class Solution { public ArrayList<String> anagrams(String[] strs) { ArrayList<String> rst = new ArrayList<String>(); HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>(); for (String s : strs) { char[] c = s.toCharArray(); java.util.Arrays.sort(c); String newStr = new String(c); if (map.containsKey(newStr)) { map.get(newStr).add(s); } else { ArrayList<String> analist = new ArrayList<String>(); analist.add(s); map.put(newStr, analist); } } for (String s2 : map.keySet()) { if (map.get(s2).size() > 1) { rst.addAll(map.get(s2)); } } return rst; } }