1public boolean isValid(String s) {
2 Stack<Character> stack = new Stack<>();
3 Map<Character, Character> matchMap = new HashMap<>();
4 matchMap.put(')', '(');
5 matchMap.put('}', '{');
6 matchMap.put(']', '[');
7
8 for (int i = 0; i < s.length(); i++) {
9 char c = s.charAt(i);
10
11 if (matchMap.containsKey(c)) {
12 if (stack.isEmpty()) {
13 return false;
14 }
15
16 if (stack.peek() != matchMap.get(c)) {
17 return false;
18 }
19
20 stack.pop();
21 } else {
22 stack.push(c);
23 }
24 }
25
26 return stack.isEmpty();
27}