如果是左边的括号就让他进栈,进栈。
比如 ([{}])
左边进栈 ([{右边第一个}然后正好对上最后一个出栈。如果到最后堆栈为空就返回true
特殊情况
如果是{}]
就是在堆栈空的时候来了个右边的括号那绝对是匹配不上的
代码
class Solution {
public boolean isValid(String s) {
int n = s.length();
Deque stack = new linkedList<>();
HashMap map = new HashMap() {{
put(')', '(');
put('}', '{');
put(']', '[');
}};
for (int i = 0; i < n; i++) {
char ch = s.charAt(i);
if (map.containsKey(ch)) {
if (stack.isEmpty() || stack.peek() != map.get(ch)) {
return false;
}
stack.pop();
} else {
stack.push(ch);
}
}
return stack.isEmpty();
}
}



