diff --git a/clean-code-challanges/src/main/java/Acronym.java b/clean-code-challanges/src/main/java/Acronym.java index 5e00939..bb9ca73 100644 --- a/clean-code-challanges/src/main/java/Acronym.java +++ b/clean-code-challanges/src/main/java/Acronym.java @@ -1,3 +1,5 @@ +import java.util.Locale; + /** * Convert a phrase to its acronym. * @@ -6,13 +8,31 @@ * Help generate some jargon by writing a program that converts a long name like Portable Network Graphics to its acronym (PNG). */ class Acronym { - + private String phrase; Acronym(String phrase) { - + this.phrase = phrase; } String get() { - return null; + this.phrase = replaceSpecialChars(); + this.phrase = cleanupSpaces(); + this.phrase = getFirstCharsAfterSpaces(); + return this.phrase; + } + + private String getFirstCharsAfterSpaces() { + String resultString = ""; + String[] words = phrase.split(" "); + for(String word : words) { + resultString += word.substring(0,1).toUpperCase(Locale.ROOT); + } + return resultString; + } + private String replaceSpecialChars() { + return phrase.replaceAll("[^a-zA-Z0-9']", " "); + } + private String cleanupSpaces() { + return phrase.replaceAll("\\s{2,}", " ").trim(); } } diff --git a/clean-code-challanges/src/main/java/IsogramChecker.java b/clean-code-challanges/src/main/java/IsogramChecker.java index 00d4c74..6cfec9f 100644 --- a/clean-code-challanges/src/main/java/IsogramChecker.java +++ b/clean-code-challanges/src/main/java/IsogramChecker.java @@ -1,3 +1,7 @@ +import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Determine if a word or phrase is an isogram. * @@ -16,7 +20,26 @@ class IsogramChecker { boolean isIsogram(String phrase) { - throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + phrase = removeSpacesAndHypens(phrase); + return !checkForDoubleChars(phrase); + } + + private Boolean checkForDoubleChars(String phrase) { + String partPhraseToTest = phrase.toLowerCase(Locale.ROOT); + for (char charUnderTest : partPhraseToTest.toCharArray()) { + partPhraseToTest = partPhraseToTest.substring(1); + boolean charFoundInPartPhrase = partPhraseToTest.indexOf(charUnderTest) != -1; + if(charFoundInPartPhrase) { + return true; + } + } + return false; } + private String removeSpacesAndHypens(String phrase) { + return phrase.replace(" ", "").replace("-", ""); + } + + + }