Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,945 questions

51,887 answers

573 users

How to find groups of anagrams of a given words in Java

1 Answer

0 votes
import java.util.Map;
import java.util.List;
import java.util.Arrays;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.stream.Collectors;

public class MyClass {
    public static void groupAnagrams(String[] words) {
        List<String> list = Arrays.stream(words)
                        .map(word -> word.toCharArray())
                        .map(chars -> {Arrays.sort(chars); return new String(chars);})
                        .collect(Collectors.toList());
            
        Map<String, List<Integer>> map = new HashMap<>();
        
        for (int i = 0; i < list.size(); i++) {
            map.putIfAbsent(list.get(i), new ArrayList<>());
            map.get(list.get(i)).add(i);
        }
        
        for (var entry: map.entrySet()) {
            System.out.println(entry.getValue().stream()
                            .map(index -> words[index])
                            .collect(Collectors.toList()));
            }
    }
    
    public static void main(String args[]) {
        String[] words = {"demo", "are", "code", "ear", "trap", "rapt", "dome", "part", "mode"};
        
        groupAnagrams(words);
    }
}





/*
run:

[code]
[trap, rapt, part]
[demo, dome, mode]
[are, ear]

*/

 



answered Jan 16, 2023 by avibootz
...