先进入字符串括号的前半部分,然后依次弹出前半部分的元素,看与后半部分的元素是否对称,可以用于判断是否是偶数对称回文
class Solution {
public boolean isValid(String s) {
/*对以一个字符串,采用栈的思想
如果是以(、{、[、开始的,则先存入栈中;在匹配是否有对称的
如果不是这几个字符串,则判断栈是否为空;为空;说明不是匹配的括号
栈不为空,则判断栈中的元素是否与刚进来的字符串匹配;
不匹配,则说明不是有效的括号*/
Stack<Character> stack=new Stack<>();
for(char c:s.toCharArray()){
if(c=='(' || c=='[' || c=='{' ){
stack.push(c);
}else{
if(stack.isEmpty()){
return false;
}else{
char cStack=stack.pop();
boolean b1=c==')'&&cStack!='(';
boolean b2=c==']'&&cStack!='[';
boolean b3=c=='}'&&cStack!='{';
if(b1||b2||b3){
return false;
}
}
}
}
return stack.isEmpty();
}
}