import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
boolean flag = false; // 描述返回值(是否有效)
Stack stack = new Stack();
for(int i = 0 ; i < s.length() ; i++) {
char c = s.charAt(i);
if(c == '{' || c == '[' || c == '(') { // 如果是左括号就压栈
stack.push(c);
} else { // 如果不是左括号的话就要从栈中弹出一个元素与现在的元素匹配
if(stack.empty()) { // 有右括号要匹配但是栈为空
return false;
}
char p = (char)stack.pop();
if(p == '{' && c == '}') {
flag = true;
} else if(p == '[' && c == ']') {
flag = true;
} else if(p == '(' && c == ')') {
flag = true;
} else {
return false;
}
}
}
if(stack.empty()) { // 遍历结束后再次验证栈是否为空
return flag;
} else {
return false;
}
}
}