From a71c12ce07de40c7eb2bbdc5a553068876bb0833 Mon Sep 17 00:00:00 2001 From: Daniel Horowitz Date: Tue, 13 Mar 2018 05:20:15 -0400 Subject: [PATCH 1/4] cant pass the multiple test case yet --- src/main/java/io/zipcoder/ParenChecker.java | 58 +++++++++++++ .../java/io/zipcoder/ParenCheckerTest.java | 83 +++++++++++++++++++ 2 files changed, 141 insertions(+) diff --git a/src/main/java/io/zipcoder/ParenChecker.java b/src/main/java/io/zipcoder/ParenChecker.java index caee675..d479e74 100644 --- a/src/main/java/io/zipcoder/ParenChecker.java +++ b/src/main/java/io/zipcoder/ParenChecker.java @@ -1,4 +1,62 @@ package io.zipcoder; +import java.util.Stack; + public class ParenChecker { + + Stack checker = new Stack(); + + public boolean parenCheck(String check) { + + for (int i = 0; i < check.length(); i++) { + if (check.charAt(i) == ')' && checker.isEmpty()) + return false; + if (check.charAt(i) == '(') { + checker.push(check.charAt(i)); + } + if (check.charAt(i) == ')' ) { + checker.pop(); + } + } + return checker.isEmpty(); + } + + public boolean allCheck(String check) { +// Pair input = new Pair('&', '&'); + + for (int i = 0; i < check.length(); i++) { + char current = check.charAt(i); +// if(check.charAt(i) == input.getOpen()) +// checker.push(check.charAt(i)); +// char top = checker.peek(); +// if(check.charAt(i) == input.getClose(top) && top == input.getOpen()) { +// checker.pop(); +// } + + + + if ((current == ')' || current == '}' || current == ']' || current == '>') && checker.isEmpty()) { + return false; + } + if (current == '(' || current == '{' || current == '[' || + current == '<' || current == '\'' || current == '"') { + checker.push(current); + } + char top = checker.peek(); + if (current == ')' && top == '(' || current == '}' && top == '{' || + current == ']' && top == '[' || current == '>' && top == '<' || + current == '\'' && top == '\'' || current == '"' && top == '"') { + checker.pop(); + } + } + return checker.isEmpty(); + } + } + + + + + + + diff --git a/src/test/java/io/zipcoder/ParenCheckerTest.java b/src/test/java/io/zipcoder/ParenCheckerTest.java index 76aa3b6..073df1e 100644 --- a/src/test/java/io/zipcoder/ParenCheckerTest.java +++ b/src/test/java/io/zipcoder/ParenCheckerTest.java @@ -1,8 +1,91 @@ package io.zipcoder; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; +import java.util.Stack; + public class ParenCheckerTest { + @Test + public void parenCheckerTest() { + //Given + ParenChecker parenChecker = new ParenChecker(); + + + String string1 = "I love (Luke)"; + String string2 = "I love (Cars)"; + String string3 = "I love coding)"; + + + boolean actual = parenChecker.parenCheck(string3); + + Assert.assertFalse(actual); + + + } + + @Test + public void parenCheckerTest1() { + //Given + ParenChecker parenChecker = new ParenChecker(); + + + String string1 = "I love (Luke)"; + String string2 = "I love (Cars)"; + String string3 = "I love coding)"; + + + Assert.assertTrue(parenChecker.parenCheck(string1)); + + } + + @Test + public void parenCheckerTest2() { + //Given + ParenChecker parenChecker = new ParenChecker(); + + + String string1 = "I love (Luke)"; + String string2 = "I love (Cars)"; + String string3 = "I \"love\" { { [c] }}o\'d\'ing)"; + + + boolean actual = parenChecker.allCheck(string3); + + Assert.assertFalse(actual); + + + } + + @Test + public void parenCheckerTest4() { + //Given + ParenChecker parenChecker = new ParenChecker(); + + + String string1 = "I love (Luke)"; + String string2 = "I love (Cars)"; + String string3 = "I (\"love\" { { [c] }}oding)\""; + + + Assert.assertTrue(parenChecker.allCheck(string3)); + + } + + @Test + public void parenCheckerTest5() { + //Given + ParenChecker parenChecker = new ParenChecker(); + + + String string1 = "I love (Luke)"; + String string2 = "I {love >Cars"; + String string3 = "I (\"love\" { { [c] }}oding)\""; + + + Assert.assertFalse(parenChecker.allCheck(string2)); + + } } \ No newline at end of file From 2119b9a3b51a971374204f0534c0455fe8ab1e10 Mon Sep 17 00:00:00 2001 From: Daniel Horowitz Date: Tue, 13 Mar 2018 05:23:19 -0400 Subject: [PATCH 2/4] all pass --- src/main/java/io/zipcoder/ParenChecker.java | 60 ++++++++++++++------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/src/main/java/io/zipcoder/ParenChecker.java b/src/main/java/io/zipcoder/ParenChecker.java index d479e74..93e9869 100644 --- a/src/main/java/io/zipcoder/ParenChecker.java +++ b/src/main/java/io/zipcoder/ParenChecker.java @@ -23,34 +23,54 @@ public boolean parenCheck(String check) { public boolean allCheck(String check) { // Pair input = new Pair('&', '&'); - for (int i = 0; i < check.length(); i++) { char current = check.charAt(i); + if (current == '(' || current == '{' + || current == '[' || current == '<' || current == '"' || current == '\'') { + checker.push(current); + } + if ((current == ')' || current == '}' || current == ']' || current == '>') || current == '"' || current == '\'') { + if (checker.isEmpty()) { + return false; + } + char last = checker.peek(); + if (current == ')' && last == '(' || current == '}' && last == '{' + || current == ']' && last == '[' || current == '>' && last == '<' || current == '"' && last == '"' + || current == '\'' && last == '\'') { + checker.pop(); + } + } + } + return checker.isEmpty(); + } + +// for (int i = 0; i < check.length(); i++) { +// char current = check.charAt(i); // if(check.charAt(i) == input.getOpen()) // checker.push(check.charAt(i)); // char top = checker.peek(); // if(check.charAt(i) == input.getClose(top) && top == input.getOpen()) { // checker.pop(); // } - - - - if ((current == ')' || current == '}' || current == ']' || current == '>') && checker.isEmpty()) { - return false; - } - if (current == '(' || current == '{' || current == '[' || - current == '<' || current == '\'' || current == '"') { - checker.push(current); - } - char top = checker.peek(); - if (current == ')' && top == '(' || current == '}' && top == '{' || - current == ']' && top == '[' || current == '>' && top == '<' || - current == '\'' && top == '\'' || current == '"' && top == '"') { - checker.pop(); - } - } - return checker.isEmpty(); - } +// +// +// +// if ((current == ')' || current == '}' || current == ']' || current == '>') && checker.isEmpty()) { +// return false; +// } +// if (current == '(' || current == '{' || current == '[' || +// current == '<' || current == '\'' || current == '"') { +// checker.push(current); +// } +// char top = checker.peek(); +// if (current == ')' && top == '(' || current == '}' && top == '{' || +// current == ']' && top == '[' || current == '>' && top == '<' || +// current == '\'' && top == '\'' || current == '"' && top == '"') { +// checker.pop(); +// } +// } +// return checker.isEmpty(); +// } } From 1e90a0b53409730abe963943f2d2aa7f89ee4dc8 Mon Sep 17 00:00:00 2001 From: Daniel Horowitz Date: Tue, 13 Mar 2018 15:20:40 -0400 Subject: [PATCH 3/4] Lab Complete --- pom.xml | 12 + src/main/java/io/zipcoder/WC.java | 58 +- src/main/resources/.DS_Store | Bin 0 -> 6148 bytes src/main/resources/1400-0.txt | 20027 ++++++++++++++++++++++++ src/main/resources/testFile.txt | 2 + src/test/java/io/zipcoder/WCTest.java | 30 +- 6 files changed, 20124 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/.DS_Store create mode 100644 src/main/resources/1400-0.txt create mode 100644 src/main/resources/testFile.txt diff --git a/pom.xml b/pom.xml index e66b725..efb68c4 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,18 @@ io.zipcoder collections 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + diff --git a/src/main/java/io/zipcoder/WC.java b/src/main/java/io/zipcoder/WC.java index babb68c..ec95270 100644 --- a/src/main/java/io/zipcoder/WC.java +++ b/src/main/java/io/zipcoder/WC.java @@ -2,11 +2,17 @@ import java.io.FileNotFoundException; import java.io.FileReader; -import java.util.Iterator; -import java.util.Scanner; +import java.util.*; +import java.util.Map.Entry; -public class WC { +import static java.util.stream.Collectors.toMap; + + + +public class WC{ private Iterator si; + Map reader = new LinkedHashMap(); + private ArrayList sorted; public WC(String fileName) { try { @@ -18,6 +24,52 @@ public WC(String fileName) { } public WC(Iterator si) { + this.si = si; } + + public Map wordCollector() { + + int count = 0; + while (si.hasNext()) { + count++; + String nextWord = si.next().toLowerCase().replaceAll("[^a-z]", ""); + if(reader.containsKey(nextWord)) { + reader.put(nextWord, reader.get(nextWord)+1); + } else { + reader.put(nextWord, 1); + } + } reader.put("Total Words", count); + + return reader; + } + + + public Map sortInDescOrderByValue() { + Map sortByDesc = wordCollector().entrySet() + .stream() + .sorted(Map.Entry. comparingByValue().reversed()) + .collect(toMap(Map.Entry::getKey, + Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new)); + + return sortByDesc; + } + + public String printMap(){ + StringBuilder sb = new StringBuilder(); + for (Map.Entry entry: sortInDescOrderByValue().entrySet()) { + sb.append(entry.getKey() + ":" + " appears " + entry.getValue() + " times\n"); + } + System.out.println(sb.toString()); + return sb.toString(); + } + + + public static void main(String[] args) { + WC wc = new WC("/Users/danielhorowitz/Dev/CR-MesoLabs-Collections-EncapsulativeCharacters/src/main/resources/1400-0.txt"); + wc.printMap(); + + + } + } diff --git a/src/main/resources/.DS_Store b/src/main/resources/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0