import java.util.Map;
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashMap;
public class GroupAnagrams {
public static List<List<String>> groupAnagrams(String[] strs) {
Map<String, List<String>> anagramMap = new HashMap<>();
for (String str : strs) {
char[] charArray = str.toCharArray();
Arrays.sort(charArray); // Sort the characters
String sortedStr = new String(charArray);
anagramMap.computeIfAbsent(sortedStr, k -> new ArrayList<>()).add(str);
}
return new ArrayList<>(anagramMap.values());
}
public static void main(String[] args) {
String[] input = {"eat", "tea", "tan", "ate", "nat", "bat", "tae"};
List<List<String>> groupedAnagrams = groupAnagrams(input);
for (List<String> group : groupedAnagrams) {
System.out.println(group);
}
}
}
/*
run:
[eat, tea, ate, tae]
[bat]
[tan, nat]
*/