Problem: Group Anagrams

Given an array of strings strs, group the anagrams together. You can return the answer in any order.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

Example 1:

Input: strs = ["eat","tea","tan","ate","nat","bat"] Output: [["bat"],["nat","tan"],["ate","eat","tea"]] Example 2:

Input: strs = [""] Output: [[""]]

Example 3:

Input: strs = ["a"] Output: [["a"]]

Constraints:

1 <= strs.length <= 104 0 <= strs[i].length <= 100 strs[i] consists of lowercase English letters.

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> result = new LinkedList<>();
        HashMap<String,List<String>> identifiedKeys = new HashMap<>();

        for(int i=0; i<strs.length; i++){
            char[] disStr = strs[i].toCharArray();
            Arrays.sort(disStr);
            String currKey = String.valueOf(disStr);        
            if(!identifiedKeys.containsKey(currKey)){
                List<String> tmpList = new LinkedList<String>();
                tmpList.add(strs[i]);
                identifiedKeys.put(currKey,tmpList);
            }else{
                List<String> savedList = identifiedKeys.get(currKey);
                savedList.add(strs[i]);
            }
        }

       for(Map.Entry<String, List<String>> set :
             identifiedKeys.entrySet()) {
            result.add(set.getValue());
        }
        return result;
    }
}

11.png