From 41b2e098cb78142d52c5679802d9887333b97ddd Mon Sep 17 00:00:00 2001 From: Luis Romero Date: Mon, 16 Apr 2018 19:32:11 -0400 Subject: [PATCH 1/3] finished iteration part, with testing --- src/main/java/io/zipcoder/Problem1.java | 39 +++++++++++++++++++++ src/test/java/io/zipcoder/Problem1Test.java | 36 +++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/src/main/java/io/zipcoder/Problem1.java b/src/main/java/io/zipcoder/Problem1.java index 6cd6024..6cb8af8 100644 --- a/src/main/java/io/zipcoder/Problem1.java +++ b/src/main/java/io/zipcoder/Problem1.java @@ -1,4 +1,43 @@ package io.zipcoder; +import java.util.HashMap; +import java.util.Map; + public class Problem1 { + + private Map map; + + public Problem1() { + map = new HashMap(); + initializeMap(); + } + + public Map getMap() { + return map; + } + + public void initializeMap() { + map.put('f', '7'); + map.put('s', '$'); + map.put('1', '!'); + map.put('a', '@'); + } + + public String replaceChars(String originalString) { + char[] charArray = originalString.toCharArray(); + for (int i = 0; i < charArray.length; i++) { + char c = Character.toLowerCase(charArray[i]); + if (map.containsKey(c)) { + charArray[i] = map.get(c); + } + } + return new String(charArray); + } + + public static void main(String[] args) { + Problem1 problem1 = new Problem1(); + + } + + } diff --git a/src/test/java/io/zipcoder/Problem1Test.java b/src/test/java/io/zipcoder/Problem1Test.java index de82e99..ad83943 100644 --- a/src/test/java/io/zipcoder/Problem1Test.java +++ b/src/test/java/io/zipcoder/Problem1Test.java @@ -1,4 +1,40 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + public class Problem1Test { + + private Problem1 problem1; + private String input = "The Farmer went to the store to get 1 dollar\'s worth of fertilizer"; + private String output = "The 7@rmer went to the $tore to get ! doll@r\'$ worth o7 7ertilizer"; + + @Before + public void setup() { + problem1 = new Problem1(); + } + + @Test + public void initializeMapTest() { + // Given + char key = 'f'; + char expectedValue = '7'; + // When + char actualValue = problem1.getMap().get('f'); + // Then + Assert.assertEquals(expectedValue, actualValue); + } + + @Test + public void replaceCharsTest() { + // Given + String expectedOutput = output; + // When + String actualOutput = problem1.replaceChars(input); + // Then + Assert.assertEquals(expectedOutput, actualOutput); + } + + } From f6169f9c6835f79256860b67857e8bf6ddae84cd Mon Sep 17 00:00:00 2001 From: Luis Romero Date: Mon, 16 Apr 2018 20:02:09 -0400 Subject: [PATCH 2/3] and recursion works too, with method --- src/main/java/io/zipcoder/Problem1.java | 15 ++++++++++++++- src/test/java/io/zipcoder/Problem1Test.java | 15 +++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem1.java b/src/main/java/io/zipcoder/Problem1.java index 6cb8af8..7e2ec2c 100644 --- a/src/main/java/io/zipcoder/Problem1.java +++ b/src/main/java/io/zipcoder/Problem1.java @@ -23,7 +23,7 @@ public void initializeMap() { map.put('a', '@'); } - public String replaceChars(String originalString) { + public String replaceCharsWithIteration(String originalString) { char[] charArray = originalString.toCharArray(); for (int i = 0; i < charArray.length; i++) { char c = Character.toLowerCase(charArray[i]); @@ -34,6 +34,19 @@ public String replaceChars(String originalString) { return new String(charArray); } + public String replaceCharsWithRecursion(String originalString, int index) { + char[] charArray = originalString.toCharArray(); + char c = Character.toLowerCase(charArray[index]); + if (map.containsKey(c)) { + charArray[index] = map.get(c); + } + if (index < originalString.length() - 1) { + index++; + return replaceCharsWithRecursion(new String(charArray), index); + } + return new String(charArray); + } + public static void main(String[] args) { Problem1 problem1 = new Problem1(); diff --git a/src/test/java/io/zipcoder/Problem1Test.java b/src/test/java/io/zipcoder/Problem1Test.java index ad83943..1e6518d 100644 --- a/src/test/java/io/zipcoder/Problem1Test.java +++ b/src/test/java/io/zipcoder/Problem1Test.java @@ -27,11 +27,22 @@ public void initializeMapTest() { } @Test - public void replaceCharsTest() { + public void replaceCharsWithIterationTest() { // Given String expectedOutput = output; // When - String actualOutput = problem1.replaceChars(input); + String actualOutput = problem1.replaceCharsWithIteration(input); + // Then + Assert.assertEquals(expectedOutput, actualOutput); + } + + @Test + public void replaceCharsWithRecursionTest() { + // Given + int startingIndex = 0; + String expectedOutput = output; + // When + String actualOutput = problem1.replaceCharsWithRecursion(input, startingIndex); // Then Assert.assertEquals(expectedOutput, actualOutput); } From 9cbc444f30f8fefdea4847a99bab51f98a1c2c3b Mon Sep 17 00:00:00 2001 From: Luis Romero Date: Mon, 16 Apr 2018 20:02:31 -0400 Subject: [PATCH 3/3] added main method to display inputs/outputs --- src/main/java/io/zipcoder/Problem1.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/io/zipcoder/Problem1.java b/src/main/java/io/zipcoder/Problem1.java index 7e2ec2c..24d2a09 100644 --- a/src/main/java/io/zipcoder/Problem1.java +++ b/src/main/java/io/zipcoder/Problem1.java @@ -50,6 +50,14 @@ public String replaceCharsWithRecursion(String originalString, int index) { public static void main(String[] args) { Problem1 problem1 = new Problem1(); + String input = "The Farmer went to the store to get 1 dollar\'s worth of fertilizer"; + String output = "The 7@rmer went to the $tore to get ! doll@r\'$ worth o7 7ertilizer"; + + String test = problem1.replaceCharsWithRecursion(input, 0); + + System.out.println(input); + System.out.println(output); + System.out.println(test); }