Skip to content

Instantly share code, notes, and snippets.

@vaskoz
Created June 4, 2013 23:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vaskoz/5710413 to your computer and use it in GitHub Desktop.
Save vaskoz/5710413 to your computer and use it in GitHub Desktop.
Print all the anagrams present in a list of words. Usage: java Anagarams < /usr/share/dict/words
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Anagrams {
public static void main(String[] args) {
Map<String, Set<String>> anagrams = new HashMap<String, Set<String>>();
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String word = scanner.next().toLowerCase();
char[] letters = word.toCharArray();
Arrays.sort(letters);
String key = new String(letters);
if (anagrams.get(key) == null) {
Set<String> values = new HashSet<String>();
values.add(word);
anagrams.put(key, values);
} else {
Set<String> values = anagrams.get(key);
values.add(word);
}
}
for (Map.Entry<String, Set<String>> entry : anagrams.entrySet()) {
if (entry.getValue().size() == 1) continue;
for (String s : entry.getValue()) {
System.out.print(s + " ");
}
System.out.println();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment