33. Group Anagrams

Topic :

hashing

Difficulty :

medium

Problem Link :


problem statement

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.

solution

import java.io.*;
import java.util.*; 
class GroupAnagrams
{
   public static void main(String args[]){
       String [] strs= {"eat","tea","tan","ate","nat","bat"};
       System.out.println(groupAnagrams(strs));
    }
   static List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String,List<String>> map= new HashMap<>();
        
        for(String s :strs)
        {
            char ch[]=s.toCharArray();
            Arrays.sort(ch);
            String str= new String(ch);
           
            if(map.containsKey(str))
            {
             map.get(str).add(s); 
            }
            else
            {
                List<String> l=new ArrayList<>();
                l.add(s);
                map.put(str,l);
            }
        }
        
         return new ArrayList<>(map.values());
    } 
}
Copyright © 2023 KIZLE. - All Rights Reserved.
Website by Kounik Maitra