From 89b6770e47190f7ff9aa671176f45b04c0a49ae3 Mon Sep 17 00:00:00 2001 From: shellhub Date: Sat, 31 Oct 2020 10:25:31 +0800 Subject: [PATCH 1/4] add docs --- .../examplehub/datastructures/stack/Infix2Postfix.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/examplehub/datastructures/stack/Infix2Postfix.java b/src/main/java/com/examplehub/datastructures/stack/Infix2Postfix.java index 60b59247..a730ab8f 100644 --- a/src/main/java/com/examplehub/datastructures/stack/Infix2Postfix.java +++ b/src/main/java/com/examplehub/datastructures/stack/Infix2Postfix.java @@ -3,6 +3,14 @@ import java.util.Stack; public class Infix2Postfix { + + /** + * Convert infix to postfix. + * + * @param infixExpression the infix expression. + * @return postfix expression. + * @throws Exception if infix expression is invalid. + */ public static String infix2PostFix(String infixExpression) throws Exception { if (!BalancedParentheses.isBalanced(infixExpression)) { throw new Exception("invalid expression"); From aca09cf8c6ac22acbf70c5409ae3e4aed8b0d7c1 Mon Sep 17 00:00:00 2001 From: shellhub Date: Sat, 31 Oct 2020 10:54:07 +0800 Subject: [PATCH 2/4] remove whitespace --- .../stack/ExpressionEvaluation.java | 15 +++++++++++++++ .../examplehub/strings/RemoveWhiteSpace.java | 14 ++++++++++++++ .../stack/ExpressionEvaluationTest.java | 17 +++++++++++++++++ .../strings/RemoveWhiteSpaceTest.java | 15 +++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 src/main/java/com/examplehub/datastructures/stack/ExpressionEvaluation.java create mode 100644 src/main/java/com/examplehub/strings/RemoveWhiteSpace.java create mode 100644 src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java create mode 100644 src/test/java/com/examplehub/strings/RemoveWhiteSpaceTest.java diff --git a/src/main/java/com/examplehub/datastructures/stack/ExpressionEvaluation.java b/src/main/java/com/examplehub/datastructures/stack/ExpressionEvaluation.java new file mode 100644 index 00000000..db3d3d97 --- /dev/null +++ b/src/main/java/com/examplehub/datastructures/stack/ExpressionEvaluation.java @@ -0,0 +1,15 @@ +package com.examplehub.datastructures.stack; + +public class ExpressionEvaluation { + + /** + * Expression evaluation algorithms. + * + * @param expression the expression to be calculated. + * @return result of expression. + * @throws Exception if {@code expression} is invalid. + */ + public static int evaluate(String expression) throws Exception { + return PostfixEvaluation.evaluate(Infix2Postfix.infix2PostFix(expression)); + } +} diff --git a/src/main/java/com/examplehub/strings/RemoveWhiteSpace.java b/src/main/java/com/examplehub/strings/RemoveWhiteSpace.java new file mode 100644 index 00000000..f47d7540 --- /dev/null +++ b/src/main/java/com/examplehub/strings/RemoveWhiteSpace.java @@ -0,0 +1,14 @@ +package com.examplehub.strings; + +public class RemoveWhiteSpace { + + /** + * Remove all whitespace of a string. + * + * @param s the string to be removed whitespace. + * @return string no whitespace. + */ + public static String removeWhitespace(String s) { + return s.replaceAll(" ", ""); + } +} diff --git a/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java b/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java new file mode 100644 index 00000000..b65b80dd --- /dev/null +++ b/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java @@ -0,0 +1,17 @@ +package com.examplehub.datastructures.stack; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ExpressionEvaluationTest { + + @Test + void evaluate() throws Exception { + assertEquals(5, 2 + 3); + assertEquals(-1, 2 - 3); + assertEquals(0, 2 / 3); + assertEquals(6, 2 * 3); + assertEquals(80, ExpressionEvaluation.evaluate("1+(2*3^4)/2-2")); + } +} diff --git a/src/test/java/com/examplehub/strings/RemoveWhiteSpaceTest.java b/src/test/java/com/examplehub/strings/RemoveWhiteSpaceTest.java new file mode 100644 index 00000000..65a452dc --- /dev/null +++ b/src/test/java/com/examplehub/strings/RemoveWhiteSpaceTest.java @@ -0,0 +1,15 @@ +package com.examplehub.strings; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class RemoveWhiteSpaceTest { + @Test + void testRemoveWhitespace(){ + assertEquals("ILoveJava", RemoveWhiteSpace.removeWhitespace("I Love Java")); + assertEquals("ILoveJava", RemoveWhiteSpace.removeWhitespace("I Love Java")); + assertEquals("ILoveJava", RemoveWhiteSpace.removeWhitespace(" I L ov e Ja va")); + assertEquals("", RemoveWhiteSpace.removeWhitespace(" ")); + } +} \ No newline at end of file From 7a6ccfcd300f8a960fbadeec7ba7296975d517e6 Mon Sep 17 00:00:00 2001 From: shellhub Date: Sat, 31 Oct 2020 11:02:19 +0800 Subject: [PATCH 3/4] expression evaluation --- .../datastructures/stack/ExpressionEvaluation.java | 6 +++++- .../datastructures/stack/ExpressionEvaluationTest.java | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/examplehub/datastructures/stack/ExpressionEvaluation.java b/src/main/java/com/examplehub/datastructures/stack/ExpressionEvaluation.java index db3d3d97..bfbe326c 100644 --- a/src/main/java/com/examplehub/datastructures/stack/ExpressionEvaluation.java +++ b/src/main/java/com/examplehub/datastructures/stack/ExpressionEvaluation.java @@ -1,5 +1,7 @@ package com.examplehub.datastructures.stack; +import com.examplehub.strings.RemoveWhiteSpace; + public class ExpressionEvaluation { /** @@ -10,6 +12,8 @@ public class ExpressionEvaluation { * @throws Exception if {@code expression} is invalid. */ public static int evaluate(String expression) throws Exception { - return PostfixEvaluation.evaluate(Infix2Postfix.infix2PostFix(expression)); + + return PostfixEvaluation.evaluate( + Infix2Postfix.infix2PostFix(RemoveWhiteSpace.removeWhitespace(expression))); } } diff --git a/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java b/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java index b65b80dd..08367196 100644 --- a/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java +++ b/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java @@ -13,5 +13,6 @@ void evaluate() throws Exception { assertEquals(0, 2 / 3); assertEquals(6, 2 * 3); assertEquals(80, ExpressionEvaluation.evaluate("1+(2*3^4)/2-2")); + assertEquals(80, ExpressionEvaluation.evaluate("1 + (2 * 3 ^ 4) / 2 - 2")); } } From 5eca318838f73b8cdab030d581562d3c26ad47ac Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Sat, 31 Oct 2020 03:03:37 +0000 Subject: [PATCH 4/4] Formatted with Google Java Formatter --- .../stack/ExpressionEvaluationTest.java | 4 ++-- .../com/examplehub/strings/RemoveWhiteSpaceTest.java | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java b/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java index 08367196..28dc0435 100644 --- a/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java +++ b/src/test/java/com/examplehub/datastructures/stack/ExpressionEvaluationTest.java @@ -1,9 +1,9 @@ package com.examplehub.datastructures.stack; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + class ExpressionEvaluationTest { @Test diff --git a/src/test/java/com/examplehub/strings/RemoveWhiteSpaceTest.java b/src/test/java/com/examplehub/strings/RemoveWhiteSpaceTest.java index 65a452dc..e85d4162 100644 --- a/src/test/java/com/examplehub/strings/RemoveWhiteSpaceTest.java +++ b/src/test/java/com/examplehub/strings/RemoveWhiteSpaceTest.java @@ -1,15 +1,16 @@ package com.examplehub.strings; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + class RemoveWhiteSpaceTest { @Test - void testRemoveWhitespace(){ + void testRemoveWhitespace() { assertEquals("ILoveJava", RemoveWhiteSpace.removeWhitespace("I Love Java")); assertEquals("ILoveJava", RemoveWhiteSpace.removeWhitespace("I Love Java")); - assertEquals("ILoveJava", RemoveWhiteSpace.removeWhitespace(" I L ov e Ja va")); + assertEquals( + "ILoveJava", RemoveWhiteSpace.removeWhitespace(" I L ov e Ja va")); assertEquals("", RemoveWhiteSpace.removeWhitespace(" ")); } -} \ No newline at end of file +}