import java.util.*;
public class Solution {
public boolean isValid (String s) {
// 预处理
if (s.length() == 0) return true;
if (s.length() % 2 == 1) return false;
// 初始化
Stack<Character> stack = new Stack<>();
// 遍历字符串
for (char c : s.toCharArray()) {
switch (c) {
case '(':
stack.push(')'); // 期望匹配右小括号
break;
case '[':
stack.push(']'); // 期望匹配右中括号
break;
case '{':
stack.push('}'); // 期望匹配右大括号
break;
default:
if (stack.isEmpty() || stack.pop() != c) return false;
}
} // 遍历结束
// 此时栈空则合法
return stack.isEmpty();
}
}