题目描述
写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)
给定一个表达式A,请返回一个bool值,代表它是否合法。加入括号是否匹配的判断
测试样例:
"[a+b*(5-4)]*{x+b+b*(1+2)}"
返回:true
测试样例:
"[a+b*(5-4)]*{x+b+b*(({1+2)}}"
返回:false
import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args){ Scanner scan = new Scanner(System.in); while(scan.hasNextLine()){ String str = scan.nextLine(); int length = str.length(); Stack<Character> s = new Stack<Character>(); boolean flag = true; for(int i = 0 ; i < length ; i++){ char ch = str.charAt(i); switch(ch){ case '{': s.push(ch); break; case '}': if(s.peek() == '{'){ s.pop(); }else{ flag = false; } break; case '[': s.push(ch); break; case ']': if(s.peek() == '['){ s.pop(); }else{ flag = false; } break; case '(': s.push(ch); break; case ')': if(s.peek() == '('){ s.pop(); }else{ flag = false; } break; default: break; } } System.out.println(s.isEmpty() && flag); } scan.close(); } }