題目:[程式設計題] 表達式合法判斷
時間限制: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();
}