g0001_0100.s0049_group_anagrams.Solution Maven / Gradle / Ivy
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
// #2022_06_16_Time_11_ms_(71.16%)_Space_55.9_MB_(50.54%)
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