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