题目描述



写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)

A,请返回一个bool值,代表它是否合法。



测试样例:



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



返回:true



测试样例:
"[a+b*(5-4)]*{x+b+b*(({1+2)}}"
 返回:false

 本题目较为坑,只要左右大小一样就行不用匹配

 可以考虑用栈来实现

 方法一:

 class ChkExpression {
 public:
     bool chkLegal(string A) {
         vector<char> stack;
         for(int i = 0;i<A.size();i++)
         {
             if(A[i] == '{' || A[i] == '(' || A[i] == '[')
             {
                 stack.push_back(A[i]);
             }
             else if(A[i] == '}' || A[i] == ')' || A[i] == ']')
             {
                     stack.pop_back();
             }
         }
         return stack.empty();
     }
 };
 

 方法二

 
   class  
   ChkExpression { 
  
 
   public 
   : 
  
 
        
   bool chkLegal (string A) { 
  
 
            
   // write code here 
  
 
            
   int  
   k1= 
   0 
   , k2= 
   0 
   ; 
  
 
            
   for 
   ( 
   int  
   i= 
   0 
   ;i<A.size();i++) 
  
 
            
   { 
  
 
                
   if 
   (A[i]== 
   '(' 
   ||A[i]== 
   '[' 
   ||A[i]== 
   '{' 
   ) 
  
 
                    
   { 
  
 
               
          
   k1++;