How to group Anagrams from an array of strings in Java

1 Answer

0 votes
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]

*/

 



answered Jun 9, 2025 by avibootz
...