天天看點

《去哪網程式設計題》表達式合法判斷

題目:[程式設計題] 表達式合法判斷

時間限制:3秒

空間限制:32768K

寫一段代碼,判斷一個包括’{‘,’[‘,’(‘,’)’,’]’,’}’的表達式是否合法(注意看樣例的合法規則。)

給定一個表達式A,請傳回一個bool值,代表它是否合法。

測試樣例:

“[a+b*(5-4)]{x+b+b(({1+2)}}”

傳回:true

解析:利用棧來做,當遇到 ‘{‘, ‘[‘, ‘(’ 等就把目前的括号字元入棧,當遇到 ‘)’ , ‘]’ , ‘}’ 就出棧一個括号字元。最後判斷棧是否為空,棧空則表達式合法,否則不合法

public static boolean chkLegal(String A) {
        Stack<Character> stack = new Stack<>();
        for(int i=;i<A.length();i++){
            if(A.charAt(i)=='{'||A.charAt(i)=='['||A.charAt(i)=='('){
                stack.push(A.charAt(i));
            }
            if(A.charAt(i)=='}'||A.charAt(i)==']'||A.charAt(i)==')'){
                stack.pop();
            }
        }
        return stack.isEmpty();
    }
           

繼續閱讀