1. 程式人生 > >用棧判斷是否對稱的字串

用棧判斷是否對稱的字串

 先進入字串括號的前半部分,然後依次彈出前半部分的元素,看與後半部分的元素是否對稱,可以用於判斷是否是偶數對稱迴文

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