import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here // 1.创建一个栈,用来匹配左右括号 Stack<Character> stack = new Stack<>(); // 2.遍历字符串 for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(' || c == '{' || c == '[') { // 如果是左括号,直接入栈 stack.push(c); } else if (c == ')') { // 如果是')',则观察栈顶元素,若是'('则出栈 if (!stack.isEmpty() && stack.peek() == '(') { stack.pop(); } else { return false; } } else if (c == '}') { // 如果是'}',则观察栈顶元素,若是'{'则出栈 if (!stack.isEmpty() && stack.peek() == '{') { stack.pop(); } else { return false; } } else if (c == ']') { // 如果是']',则观察栈顶元素,若是'['则出栈 if (!stack.isEmpty() && stack.peek() == '[') { stack.pop(); } else { return false; } } } // 3.若栈空,则有效 return stack.isEmpty(); } }