括号的匹配问题

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

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

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

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);   

   }   

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值