All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0001_0100.s0049_group_anagrams.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0001_0100.s0049_group_anagrams;

// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #String #Hash_Table #Sorting
// #Data_Structure_II_Day_8_String #Programming_Skills_II_Day_11 #Udemy_Strings
// #Big_O_Time_O(n*k_log_k)_Space_O(n) #2023_08_11_Time_6_ms_(92.28%)_Space_46.4_MB_(98.50%)

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 49 - Group Anagrams\.
 *
 * Medium
 *
 * 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.
**/
public class Solution {
    public List> groupAnagrams(String[] strs) {
        Map> hm = new HashMap<>();
        for (String s : strs) {
            char[] ch = s.toCharArray();
            Arrays.sort(ch);
            String temp = new String(ch);
            hm.computeIfAbsent(temp, k -> new ArrayList<>());
            hm.get(temp).add(s);
        }
        return (new ArrayList<>(hm.values()));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy