diff --git a/pom.xml b/pom.xml
index e66b725..5c3991d 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.7
+ 1.7
+
+
+
+
diff --git a/src/main/java/io/zipcoder/ParenChecker.java b/src/main/java/io/zipcoder/ParenChecker.java
index caee675..60891d5 100644
--- a/src/main/java/io/zipcoder/ParenChecker.java
+++ b/src/main/java/io/zipcoder/ParenChecker.java
@@ -1,4 +1,100 @@
package io.zipcoder;
+//import java.util.HashMap;
+//import java.util.Map;
+import java.util.Stack;
+
public class ParenChecker {
+
+ Stack parenStack = new Stack();
+
+ //going to pass in the chars we are looking for contained within a String ''
+ public boolean parenChecker(String string) {
+ for (int i = 0; i < string.length(); i++) {
+ char charCurrent = string.charAt(i);
+ if (charCurrent == '(') {
+ parenStack.push(charCurrent);
+ }
+ if (charCurrent == ')') { //if stack's empty, no existing pair for it to link to.
+ if (parenStack.isEmpty())
+ return false;
+
+ char charOnStack = parenStack.peek();
+ if (charCurrent == ')' && charOnStack == '(') {
+ parenStack.pop();
+ } else
+ return false;
+ }
+ }
+ return parenStack.empty();
+ }
+
+ public boolean pairOfParenthesies(String string) {
+ Stack parenStack = new Stack();
+ for (int i =0; i < string.length(); i++) {
+ char currentCharacter = string.charAt(i);
+ if (currentCharacter == '[' || currentCharacter == '"' || currentCharacter == '<' || currentCharacter == '\'' || currentCharacter == '{' || currentCharacter == '(') {
+ parenStack.push(currentCharacter);
+ }
+ if (currentCharacter == ']' || currentCharacter == '"' || currentCharacter == '>' || currentCharacter == '\'' || currentCharacter == '}' || currentCharacter == ')' ) {
+
+ if (parenStack.isEmpty())
+ return false;
+ // look at the object at the top of the stack but don't remove, PEEK
+ char finalCharacter = parenStack.peek();
+ if (currentCharacter == ']' && finalCharacter == '[' || currentCharacter == '"' && finalCharacter == '"'
+ || currentCharacter == '>' && finalCharacter =='<' || currentCharacter == '\'' && finalCharacter == '\'' || currentCharacter == '}' && finalCharacter == '{' || currentCharacter == ')' && finalCharacter == '(') {
+ parenStack.pop();
+ } else
+ return false;
+ }
+ }
+ return parenStack.isEmpty();
+ }
}
+
+ //check if characters are balanced//
+//
+// private static boolean isBalanced(String str) {
+// Map bracketPairs = new HashMap(){
+// {
+// put('(', ')');
+// put('{', '}');
+// put('[', ']');
+// put('<', '>');
+// }
+// };
+//
+// //in order to be balanced, there ought to be an even number of chars
+// if(str.length() % 2 !=0) {
+// return false;
+// }
+// //stores opening braces in this case
+// Stack halfBraces = new Stack<>();
+//
+// for(int i = 0; i < str.length(); i++) {
+// //if characters (bracket) is opening, then store into stack
+// if(bracketPairs.containsKey(str.charAt(i))){
+// halfBraces.push(str.charAt(i));
+// }
+//
+// //if closing bracket is not equal to top of stack or if stack is empty, return false
+// else if(halfBraces.isEmpty() || bracketPairs.get(halfBraces.pop()) !=str.charAt(i)) {
+// return false;
+// }
+// }
+// return halfBraces.isEmpty() ? true : false;
+// }
+//
+//}
+
+
+// public static boolean checkParenthesies(String input) {
+// Stack stack = new Stack();
+// for (int i = 0; i < input.length(); i++) {
+// char c = input.charAt(i);
+// if (c == '[' || c == '(' || c == '{') {
+// stack.push(c);
+// }
+// }
+// }
diff --git a/src/test/java/io/zipcoder/ParenCheckerTest.java b/src/test/java/io/zipcoder/ParenCheckerTest.java
index 76aa3b6..c2c1598 100644
--- a/src/test/java/io/zipcoder/ParenCheckerTest.java
+++ b/src/test/java/io/zipcoder/ParenCheckerTest.java
@@ -3,6 +3,114 @@
import org.junit.Assert;
import org.junit.Test;
+import java.util.Stack;
+
+
public class ParenCheckerTest {
+ @Test
+ public void parenthesisCheckerTest() {
+ //Given
+ ParenChecker parenthesisTest = new ParenChecker();
+
+ //When
+ String testString = "()";
+ boolean actual = parenthesisTest.parenChecker(testString);
+
+ //Then
+ Assert.assertTrue(actual);
+ }
+
+ @Test
+ public void parenthesisCheckerTest2() {
+ //Given
+ ParenChecker parenthesisTest = new ParenChecker();
+
+ //When
+ String testString2 = "()(";
+ boolean actual = parenthesisTest.parenChecker(testString2);
+
+ //Then
+ Assert.assertFalse(actual);
+ }
+ @Test
+ public void parenthesisCheckerTest3() {
+ //Given
+ ParenChecker parenthesisTest = new ParenChecker();
+
+ //When
+ String testString3 = "(i)p(";
+ boolean actual = parenthesisTest.parenChecker(testString3);
+
+ //Then
+ Assert.assertFalse(actual);
+ }
+
+ @Test
+ public void parenthesisCheckerTest4() {
+ //Given
+ ParenChecker parenthesisTest = new ParenChecker();
+
+ //When
+ String testString4 = "a(ki)loop(jj)hi";
+ boolean actual = parenthesisTest.parenChecker(testString4);
+
+ //Then
+ Assert.assertTrue(actual);
+ }
+
+
+ @Test
+ public void pairCheckerTest1() {
+ //Given
+ ParenChecker parenthesisTest = new ParenChecker();
+
+
+ //When
+ String testString2 = ")()(";
+ boolean actual = parenthesisTest.pairOfParenthesies(testString2);
+
+ //Then
+ Assert.assertFalse(actual);
+ }
+
+ @Test
+ public void pairCheckerTest2() {
+ //Given
+ ParenChecker parenthesisTest = new ParenChecker();
+
+ //When
+ String testString = "[]<>";
+ boolean actual = parenthesisTest.pairOfParenthesies(testString);
+
+ //Then
+ Assert.assertTrue(actual);
+ }
+
+ @Test
+ public void pairCheckerTest3() {
+ //Given
+ ParenChecker parenthesisTest = new ParenChecker();
+
+
+ //When
+ String testString3 = "atom)p(min)low(da";
+ boolean actual = parenthesisTest.pairOfParenthesies(testString3);
+
+ //Then
+ Assert.assertFalse(actual);
+ }
+
+ @Test
+ public void pairCheckerTest4() {
+ //Given
+ ParenChecker parenthesisTest = new ParenChecker();
+
+ //When
+ String testString4 = "do[re]miaro";
+ boolean actual = parenthesisTest.pairOfParenthesies(testString4);
+
+ //Then
+ Assert.assertTrue(actual);
+ }
}
\ No newline at end of file