diff --git a/clean-code-challanges/src/main/java/Acronym.java b/clean-code-challanges/src/main/java/Acronym.java index 5e00939..1801a77 100644 --- a/clean-code-challanges/src/main/java/Acronym.java +++ b/clean-code-challanges/src/main/java/Acronym.java @@ -8,7 +8,7 @@ class Acronym { Acronym(String phrase) { - +String test = "test"; } String get() { diff --git a/clean-code-challanges/src/main/java/Anagram.java b/clean-code-challanges/src/main/java/Anagram.java index 9930cd0..0fdf9af 100644 --- a/clean-code-challanges/src/main/java/Anagram.java +++ b/clean-code-challanges/src/main/java/Anagram.java @@ -1,17 +1,39 @@ +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Locale; /** * Given a word and a list of possible anagrams, select the correct sublist. + * Wählen Sie aus einem gegebenen Wort und einer Liste möglicher Anagramme die richtige Teilliste aus. * * Given "listen" and a list of candidates like "enlists" "google" "inlets" "banana" the program should return a list containing "inlets". + * Bei "listen" und einer Liste von Kandidaten wie "enlists" "google" "inlets" "banana" sollte das Programm eine Liste mit "inlets" zurückgeben. */ public class Anagram { + private final String word; public Anagram(String word) { + this.word = word; + } + String sortLetters(String word) { + char[] letterArray = word.toLowerCase(Locale.ROOT).toCharArray(); + Arrays.sort(letterArray); + return new String(letterArray); } public List match(List candidates) { - return null; + List matchingWords = new ArrayList<>(); + String sortedWords = sortLetters(this.word); + for(String candiate : candidates) { + if(!this.word.toLowerCase(Locale.ROOT).equals(candiate.toLowerCase(Locale.ROOT))) { + String sortedWordToMatch = sortLetters(candiate); + if(sortedWords.equals(sortedWordToMatch)) { + matchingWords.add(candiate); + } + } + } + return matchingWords; } }