Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit e1dd58f

Browse files
updates valid parantheses
1 parent b3065b4 commit e1dd58f

File tree

1 file changed

+24
-35
lines changed

1 file changed

+24
-35
lines changed

src/ValidParentheses.java

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,37 @@
11
// https://leetcode.com/problems/valid-parentheses/
2+
// T: O(n)
3+
// S: O(n)
24

3-
import java.util.HashMap;
4-
import java.util.HashSet;
5-
import java.util.Map;
65
import java.util.Set;
76
import java.util.Stack;
87

98
public class ValidParentheses {
10-
private static final Set<Character> openBrackets = new HashSet<>();
11-
private static final Map<Character, Character> inverse = new HashMap<>();
12-
13-
static {
14-
openBrackets.add('(');
15-
openBrackets.add('{');
16-
openBrackets.add('[');
17-
18-
inverse.put(')', '(');
19-
inverse.put('}', '{');
20-
inverse.put(']', '[');
21-
}
22-
23-
public boolean isValid(String string) {
24-
Stack<Character> brackets = new Stack<>();
25-
for(int index = 0 ; index < string.length() ; index++) {
26-
char character = string.charAt(index);
27-
if (isOpenBracket(character)) {
28-
brackets.push(character);
29-
} else {
30-
if (!brackets.isEmpty() && brackets.peek() == inverse(character)) {
31-
brackets.pop();
32-
} else {
33-
return false;
34-
}
35-
}
9+
private static final Set<Character> CLOSING_BRACES = Set.of(')', ']', '}');
10+
11+
public boolean isValid(String s) {
12+
final Stack<Character> stack = new Stack<>();
13+
char bracket;
14+
for (int i = 0 ; i < s.length() ; i++) {
15+
bracket = s.charAt(i);
16+
if (isClosingBracket(bracket)) {
17+
if (!stack.isEmpty() && areOpposites(stack.peek(), bracket)) {
18+
stack.pop();
19+
} else return false;
20+
} else stack.push(bracket);
3621
}
37-
38-
return brackets.isEmpty();
22+
return stack.isEmpty();
3923
}
4024

41-
private char inverse(char bracket) {
42-
return inverse.get(bracket);
25+
private boolean isClosingBracket(char c) {
26+
return CLOSING_BRACES.contains(c);
4327
}
4428

45-
private boolean isOpenBracket(char bracket) {
46-
return openBrackets.contains(bracket);
29+
private boolean areOpposites(char left, char right) {
30+
return switch(left) {
31+
case '(' -> right == ')';
32+
case '[' -> right == ']';
33+
case '{' -> right == '}';
34+
default -> false;
35+
};
4736
}
4837
}

0 commit comments

Comments
 (0)