用栈判断是否对称的字符串

 先进入字符串括号的前半部分,然后依次弹出前半部分的元素,看与后半部分的元素是否对称,可以用于判断是否是偶数对称回文

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

猜你喜欢

转载自blog.csdn.net/qq_31957639/article/details/83685177