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> result = new ArrayList<String>(); if(strs.length > 0){ HashMap<String, ArrayList<String> > words = new HashMap<String, ArrayList<String>>(); for(String s : strs){ String sortedString = sortedString(s); if(words.containsKey(sortedString)) words.get(sortedString).add(s); else{ ArrayList<String> alist = new ArrayList<String>(); alist.add(s); words.put(sortedString, alist); } } Iterator<ArrayList<String> > itr = words.values().iterator(); while(itr.hasNext()){ ArrayList<String> nodes = itr.next(); if(nodes.size()> 1) result.addAll(nodes); } } return result; } public String sortedString(String s){ char[] Schar = s.toCharArray(); Arrays.sort(Schar); return Arrays.toString(Schar); } }