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;
}
}