1public List<List<String>> groupAnagrams(String[] strs) {
2 Map<String, List<String>> anagramMap = new HashMap<>();
3
4 for (String word : strs) {
5 // Count character frequency
6 int[] charCount = new int[26];
7 for (char c : word.toCharArray()) {
8 charCount[c - 'a']++;
9 }
10
11 // Build key based on character counts
12 StringBuilder keyBuilder = new StringBuilder();
13 for (int i = 0; i < 26; i++) {
14 if (charCount[i] > 0) {
15 char ch = (char) (i + 'a');
16 keyBuilder.append(ch).append(":").append(charCount[i]).append(",");
17 }
18 }
19 String key = keyBuilder.toString();
20
21 // Add word to group
22 anagramMap.putIfAbsent(key, new ArrayList<>());
23 anagramMap.get(key).add(word);
24 }
25
26 return new ArrayList<>(anagramMap.values());
27}