AlgoMaster Logo

Group Anagrams

strs=[eat, tea, tan, ate, nat, bat]
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}
0 / 33
Input Words:eatteatanatenatbat