lots of exercises in java... from https://github.com/exercism/java

example.java 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import java.util.*;
  2. public class Anagram {
  3. final private AnagramSubject anagramSubject;
  4. public Anagram(String word) {
  5. anagramSubject = new AnagramSubject(word);
  6. }
  7. public List<String> match(List<String> candidates) {
  8. List<String> anagrams = new ArrayList<String>();
  9. for (String candidate : candidates) {
  10. if (anagramSubject.anagramOf(candidate)) {
  11. anagrams.add(candidate);
  12. }
  13. }
  14. return anagrams;
  15. }
  16. static final class AnagramSubject {
  17. private String word;
  18. final private char[] fingerprint;
  19. public AnagramSubject(String other) {
  20. this.word = other;
  21. this.fingerprint = canonicalize(other);
  22. }
  23. public boolean anagramOf(String other) {
  24. return !duplicate(other) && Arrays.equals(fingerprint,canonicalize(other));
  25. }
  26. private boolean duplicate(String other) {
  27. return word.equalsIgnoreCase(other);
  28. }
  29. private char[] canonicalize(String other) {
  30. char[] chars = other.toLowerCase().toCharArray();
  31. Arrays.sort(chars);
  32. return chars;
  33. }
  34. }
  35. }