wayetan
1/5/2014 - 9:16 AM

Anagrams

Anagrams

/**
 * 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>();
    	HashMap<String, ArrayList<String>> list = new HashMap<String, ArrayList<String>>();
		if (strs.length == 0)
			return result;
		for (String s : strs) {
			char[] charArray = s.toCharArray();
			Arrays.sort(charArray);
			String key = new String(charArray);
			if (list.containsKey(key)) {
				list.get(key).add(s);
			} else {
				list.put(key, new ArrayList<String>(Arrays.asList(s)));
			}
		}
		for (ArrayList<String> test : list.values()) {
			if (test.size() > 1) {
				result.addAll(test);
			}
		}

		return result;
    }
}