Sunday, May 20, 2018

[2018-Interview] Group Anagrams

Original question: https://leetcode.com/problems/group-anagrams/description/

My answer:



class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> result = new ArrayList<List<String>>();
        if (strs == null || strs.length == 0) {
            return result;
        }
        
        Map<String, List<String>> stringAnagramMap = new HashMap<String, List<String>>();

        for (int i = 0; i < strs.length; i ++) {
            
            char[] charsOfStr = strs[i].toCharArray();
            Arrays.sort(charsOfStr);
            String sortedChar = String.valueOf(charsOfStr);
            
            if (!stringAnagramMap.containsKey(sortedChar)) {
                List<String> singleResult = new ArrayList<String>();
                stringAnagramMap.put(sortedChar, singleResult);
            }
            stringAnagramMap.get(sortedChar).add(strs[i]);
        }
        for (List<String> value : stringAnagramMap.values()) {
            result.add(value);
        }
        return result;
    }
}

No comments:

Post a Comment