[置顶] 括号的匹配问题

时间:2022-08-19 18:52:42

括号的匹配问题。即:[ ] { } ( ) < >

    判断给定的括号序列是否合法。

可用“期待的急迫程度”这一概念来解决。即:先满足急迫程度最强的需求。

import java.util.Stack;

public class Test {  

   private static Stack<Character> s=new Stack<Character>();

   public static boolean compare(char c)

   {

   switch(c)

   {

      case '(':

      case '{':

      case '[':

      case '<':s.push(c);return true;

      case ')':if(!s.isEmpty()&&s.pop().equals('(')) return truereturn false;

      case '}':if(!s.isEmpty()&&s.pop().equals('{')) return truereturn false;

      case ']':if(!s.isEmpty()&&s.pop().equals('[')) return truereturn false;

      case '>':if(!s.isEmpty()&&s.pop().equals('<')) return truereturn false;

      defaultreturn false;

   }

   }

   public static boolean test(String s)

   {

   if(s.length()%2!=0)

   return false;

   for(int i=0;i<s.length();i++)

   {

   if(!compare(s.charAt(i)))

   return false;    

   }

   return true;

   }

   public static void main(String[] args) {  

       String s="(<{[]}>)";

       if(test(s))

        System.out.println(true);

       else 

   System.out.println(false);   

   }   

}