From 0ae39a8977dbb99a85745a784c5375460a1f79ca Mon Sep 17 00:00:00 2001 From: Gokul45-45 <2400032465@kluniversity.in> Date: Tue, 25 Nov 2025 16:49:57 +0530 Subject: [PATCH 1/4] feat: add Valid Parentheses algorithm using Stack --- .../stacks/ValidParenthesesTest.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/test/java/com/thealgorithms/stacks/ValidParenthesesTest.java diff --git a/src/test/java/com/thealgorithms/stacks/ValidParenthesesTest.java b/src/test/java/com/thealgorithms/stacks/ValidParenthesesTest.java new file mode 100644 index 000000000000..ab819b6fffd4 --- /dev/null +++ b/src/test/java/com/thealgorithms/stacks/ValidParenthesesTest.java @@ -0,0 +1,32 @@ +package com.thealgorithms.stacks; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +class ValidParenthesesTest { + + @Test + void testValidParentheses() { + assertTrue(ValidParentheses.isValid("()")); + assertTrue(ValidParentheses.isValid("()[]{}")); + assertTrue(ValidParentheses.isValid("{[]}")); + assertTrue(ValidParentheses.isValid("")); + } + + @Test + void testInvalidParentheses() { + assertFalse(ValidParentheses.isValid("(]")); + assertFalse(ValidParentheses.isValid("([)]")); + assertFalse(ValidParentheses.isValid("{{{")); + assertFalse(ValidParentheses.isValid("}")); + assertFalse(ValidParentheses.isValid("(")); + } + + @Test + void testNullAndOddLength() { + assertFalse(ValidParentheses.isValid(null)); + assertFalse(ValidParentheses.isValid("(()")); + } +} \ No newline at end of file From 7b298c073f1fb1c8b12daa6797d94e991bcf2f25 Mon Sep 17 00:00:00 2001 From: Gokul45-45 <2400032465@kluniversity.in> Date: Tue, 25 Nov 2025 16:54:20 +0530 Subject: [PATCH 2/4] fix: add missing ValidParentheses.java implementation --- .../stacks/ValidParentheses.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/main/java/com/thealgorithms/stacks/ValidParentheses.java diff --git a/src/main/java/com/thealgorithms/stacks/ValidParentheses.java b/src/main/java/com/thealgorithms/stacks/ValidParentheses.java new file mode 100644 index 000000000000..6032d75d75c5 --- /dev/null +++ b/src/main/java/com/thealgorithms/stacks/ValidParentheses.java @@ -0,0 +1,74 @@ +package com.thealgorithms.stacks; + +import java.util.HashMap; +import java.util.Map; +import java.util.Stack; + +/** + * Valid Parentheses Problem + * + * Given a string containing just the characters '(', ')', '{', '}', '[' and ']', + * determine if the input string is valid. + * + * An input string is valid if: + * 1. Open brackets must be closed by the same type of brackets. + * 2. Open brackets must be closed in the correct order. + * 3. Every close bracket has a corresponding open bracket of the same type. + * + * Examples: + * Input: "()" + * Output: true + * + * Input: "()[]{}" + * Output: true + * + * Input: "(]" + * Output: false + * + * Input: "([)]" + * Output: false + * + * @author Gokul45-45 + */ +public final class ValidParentheses { + private ValidParentheses() { + } + + /** + * Checks if the given string has valid parentheses + * + * @param s the input string containing parentheses + * @return true if valid, false otherwise + */ + public static boolean isValid(String s) { + if (s == null || s.length() % 2 != 0) { + return false; + } + + Map parenthesesMap = new HashMap<>(); + parenthesesMap.put('(', ')'); + parenthesesMap.put('{', '}'); + parenthesesMap.put('[', ']'); + + Stack stack = new Stack<>(); + + for (char c : s.toCharArray()) { + if (parenthesesMap.containsKey(c)) { + // Opening bracket - push to stack + stack.push(c); + } else { + // Closing bracket - check if it matches + if (stack.isEmpty()) { + return false; + } + char openBracket = stack.pop(); + if (parenthesesMap.get(openBracket) != c) { + return false; + } + } + } + + // Stack should be empty if all brackets are matched + return stack.isEmpty(); + } +} \ No newline at end of file From 4fe9097d5bd9281734c95a9f031aa759c1f01fcf Mon Sep 17 00:00:00 2001 From: Gokul45-45 <2400032465@kluniversity.in> Date: Tue, 25 Nov 2025 17:04:01 +0530 Subject: [PATCH 3/4] fix: remove trailing spaces and add newline at EOF --- ValidParentheses.java | 0 .../thealgorithms/stacks/ValidParentheses.java | 16 ++++++++-------- .../stacks/ValidParenthesesTest.java | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 ValidParentheses.java diff --git a/ValidParentheses.java b/ValidParentheses.java new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/src/main/java/com/thealgorithms/stacks/ValidParentheses.java b/src/main/java/com/thealgorithms/stacks/ValidParentheses.java index 6032d75d75c5..2cc616a38826 100644 --- a/src/main/java/com/thealgorithms/stacks/ValidParentheses.java +++ b/src/main/java/com/thealgorithms/stacks/ValidParentheses.java @@ -6,28 +6,28 @@ /** * Valid Parentheses Problem - * + * * Given a string containing just the characters '(', ')', '{', '}', '[' and ']', * determine if the input string is valid. - * + * * An input string is valid if: * 1. Open brackets must be closed by the same type of brackets. * 2. Open brackets must be closed in the correct order. * 3. Every close bracket has a corresponding open bracket of the same type. - * + * * Examples: * Input: "()" * Output: true - * + * * Input: "()[]{}" * Output: true - * + * * Input: "(]" * Output: false - * + * * Input: "([)]" * Output: false - * + * * @author Gokul45-45 */ public final class ValidParentheses { @@ -71,4 +71,4 @@ public static boolean isValid(String s) { // Stack should be empty if all brackets are matched return stack.isEmpty(); } -} \ No newline at end of file +} diff --git a/src/test/java/com/thealgorithms/stacks/ValidParenthesesTest.java b/src/test/java/com/thealgorithms/stacks/ValidParenthesesTest.java index ab819b6fffd4..39014780caa9 100644 --- a/src/test/java/com/thealgorithms/stacks/ValidParenthesesTest.java +++ b/src/test/java/com/thealgorithms/stacks/ValidParenthesesTest.java @@ -29,4 +29,4 @@ void testNullAndOddLength() { assertFalse(ValidParentheses.isValid(null)); assertFalse(ValidParentheses.isValid("(()")); } -} \ No newline at end of file +} From 7a68d2e309ea5ea9b9a26fc14cb6254f7bde9088 Mon Sep 17 00:00:00 2001 From: Gokul45-45 <2400032465@kluniversity.in> Date: Tue, 25 Nov 2025 17:38:34 +0530 Subject: [PATCH 4/4] fix: remove misplaced ValidParentheses.java from root --- ValidParentheses.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ValidParentheses.java diff --git a/ValidParentheses.java b/ValidParentheses.java deleted file mode 100644 index e69de29bb2d1..000000000000