Skip to content

Commit 1a391c2

Browse files
authored
Add ValidParentheses (#3689)
1 parent fea982d commit 1a391c2

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

DIRECTORY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@
477477
* [ReverseStringRecursive](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/ReverseStringRecursive.java)
478478
* [Rotation](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/Rotation.java)
479479
* [Upper](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/Upper.java)
480+
* [ValidParentheses](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/ValidParentheses.java)
480481
* [WordLadder](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/WordLadder.java)
481482
* zigZagPattern
482483
* [zigZagPattern](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/strings/zigZagPattern/zigZagPattern.java)
@@ -648,6 +649,7 @@
648649
* [ReverseStringTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/ReverseStringTest.java)
649650
* [RotationTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/RotationTest.java)
650651
* [UpperTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/UpperTest.java)
652+
* [ValidParenthesesTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/ValidParenthesesTest.java)
651653
* [WordLadderTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/WordLadderTest.java)
652654
* zigZagPattern
653655
* [zigZagPatternTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/strings/zigZagPattern/zigZagPatternTest.java)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.thealgorithms.strings;
2+
// Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
3+
// An input string is valid if:
4+
// Open brackets must be closed by the same type of brackets.
5+
// Open brackets must be closed in the correct order.
6+
// Every close bracket has a corresponding open bracket of the same type.
7+
8+
9+
public class ValidParentheses {
10+
public static boolean isValid(String s) {
11+
char[] stack = new char[s.length()];
12+
int head = 0;
13+
for(char c : s.toCharArray()) {
14+
switch(c) {
15+
case '{':
16+
case '[':
17+
case '(':
18+
stack[head++] = c;
19+
break;
20+
case '}':
21+
if(head == 0 || stack[--head] != '{') return false;
22+
break;
23+
case ')':
24+
if(head == 0 || stack[--head] != '(') return false;
25+
break;
26+
case ']':
27+
if(head == 0 || stack[--head] != '[') return false;
28+
break;
29+
}
30+
}
31+
return head == 0;
32+
}
33+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.thealgorithms.strings;
2+
3+
import org.junit.jupiter.api.Test;
4+
import static org.junit.jupiter.api.Assertions.*;
5+
6+
public class ValidParenthesesTest {
7+
8+
@Test
9+
void testOne() {
10+
assertEquals(true, ValidParentheses.isValid("()"));
11+
}
12+
13+
@Test
14+
void testTwo() {
15+
assertEquals(true, ValidParentheses.isValid("()[]{}"));
16+
}
17+
18+
19+
@Test
20+
void testThree() {
21+
assertEquals(false, ValidParentheses.isValid("(]"));
22+
}
23+
24+
}

0 commit comments

Comments
 (0)