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();
}
}