diff --git a/src/main/java/io/zipcoder/StringsAndThings.java b/src/main/java/io/zipcoder/StringsAndThings.java index 073467a..8919389 100644 --- a/src/main/java/io/zipcoder/StringsAndThings.java +++ b/src/main/java/io/zipcoder/StringsAndThings.java @@ -1,6 +1,11 @@ package io.zipcoder; +import com.sun.org.apache.xpath.internal.operations.Bool; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * @author tariq */ @@ -15,7 +20,14 @@ public class StringsAndThings { * countYZ("day fyyyz"); // Should return 2 */ public Integer countYZ(String input){ - return null; + String[] wordsOfString = input.split(" "); + int counter = 0; + for (int i = 0; i < wordsOfString.length; i++) { + if (wordsOfString[i].endsWith("y") || wordsOfString[i].endsWith("z")) { + counter++; + } + } + return counter; } /** @@ -28,7 +40,7 @@ public Integer countYZ(String input){ * removeString("Hello there", "x") // Should return "Hello there" */ public String removeString(String base, String remove){ - return null; + return base.replace(remove, ""); } /** @@ -40,7 +52,19 @@ public String removeString(String base, String remove){ * containsEqualNumberOfIsAndNot("noisxxnotyynotxisi") // Should return true */ public Boolean containsEqualNumberOfIsAndNot(String input){ - return null; + int inputLength = input.length(); //11 + + String inputWithoutIs = removeString(input, "is"); //"th not" + int inputWOLength = inputWithoutIs.length(); //7 + int diffOfIs = inputLength - inputWOLength; //11-7 = 4 + int numberOfIs = diffOfIs/2; //4/2 2 is the size of "is" + + String inputWithoutNot = removeString(input, "not"); //"this is " + int inputWONotLength = inputWithoutNot.length(); //8 + int diffOfNot = inputLength - inputWONotLength; // 11-8 = 3 + int numberOfNot = diffOfNot/3; //3/3 =1 3 is the size of "not" + + return numberOfIs == numberOfNot; } /** @@ -51,7 +75,15 @@ public Boolean containsEqualNumberOfIsAndNot(String input){ * gHappy("xxggyygxx") // Should return false */ public Boolean gIsHappy(String input){ - return null; + //check if g is to the left or right + boolean isGHappy = false; + Pattern ggs = Pattern.compile("gg"); + Matcher foundGG = ggs.matcher(input); + if (foundGG.find()) { + String goodbyeGG = removeString(input, "gg"); + isGHappy = !goodbyeGG.contains("g"); + } + return isGHappy; //returning true or false } @@ -63,6 +95,13 @@ public Boolean gIsHappy(String input){ * countTriple("a") // Should return 0 */ public Integer countTriple(String input){ - return null; + int counter = 0; + for (int i = 0; i < input.length() - 2; i++) { + if (input.charAt(i) == input.charAt(i + 1) && (input.charAt(i + 1) == input.charAt(i + 2))) { + counter++; + } + + } + return counter; } } diff --git a/src/test/java/io/zipcoder/stringsandthings/GIsHappyTest.java b/src/test/java/io/zipcoder/stringsandthings/GIsHappyTest.java index 020cd3d..b377a52 100644 --- a/src/test/java/io/zipcoder/stringsandthings/GIsHappyTest.java +++ b/src/test/java/io/zipcoder/stringsandthings/GIsHappyTest.java @@ -33,7 +33,7 @@ public void gIsHappyTest2(){ @Test public void gIsHappyTest3(){ Boolean actual = stringsAndThings.gIsHappy("xxggyygxx"); - Assert.assertTrue(actual); + Assert.assertFalse(actual); //correcting the assertion for test case } } diff --git a/target/classes/io/zipcoder/StringsAndThings.class b/target/classes/io/zipcoder/StringsAndThings.class new file mode 100644 index 0000000..c0065e0 Binary files /dev/null and b/target/classes/io/zipcoder/StringsAndThings.class differ diff --git a/target/test-classes/io/zipcoder/stringsandthings/ContainsEqualNumberOfIsAndNotTest.class b/target/test-classes/io/zipcoder/stringsandthings/ContainsEqualNumberOfIsAndNotTest.class new file mode 100644 index 0000000..556ec64 Binary files /dev/null and b/target/test-classes/io/zipcoder/stringsandthings/ContainsEqualNumberOfIsAndNotTest.class differ diff --git a/target/test-classes/io/zipcoder/stringsandthings/CountTripleTest.class b/target/test-classes/io/zipcoder/stringsandthings/CountTripleTest.class new file mode 100644 index 0000000..29d3cfe Binary files /dev/null and b/target/test-classes/io/zipcoder/stringsandthings/CountTripleTest.class differ diff --git a/target/test-classes/io/zipcoder/stringsandthings/CountYZTest.class b/target/test-classes/io/zipcoder/stringsandthings/CountYZTest.class new file mode 100644 index 0000000..27178e4 Binary files /dev/null and b/target/test-classes/io/zipcoder/stringsandthings/CountYZTest.class differ diff --git a/target/test-classes/io/zipcoder/stringsandthings/GIsHappyTest.class b/target/test-classes/io/zipcoder/stringsandthings/GIsHappyTest.class new file mode 100644 index 0000000..3bc2f6c Binary files /dev/null and b/target/test-classes/io/zipcoder/stringsandthings/GIsHappyTest.class differ diff --git a/target/test-classes/io/zipcoder/stringsandthings/RemoveStringTest.class b/target/test-classes/io/zipcoder/stringsandthings/RemoveStringTest.class new file mode 100644 index 0000000..715f4d3 Binary files /dev/null and b/target/test-classes/io/zipcoder/stringsandthings/RemoveStringTest.class differ