关于栈的应用-括号匹配问题的两种解题思路

1.解法1的思路是:先把字符串转换为数组,然后遍历数组,一旦遇到 左括号,则将它压入栈中,然后依次先对( [ {进行匹配顺序的判断,最后进行括号数量的判断,具体代码如下:
public static void signCheck(String exp)throws Exception
	{
		MyStack stack = new MyStack();
		String[] arr = Test.toStringArray(exp);
		for(int i=0;i
   
   


 

2.解法2的适用场合是:单纯的括号表达式,不包含数字等的情况。   思路是:每次都将栈顶元素出栈,如果有匹配,则不做任何处理,即栈中少了1个元素。如果无匹配,这将已经出栈的的内容“归还”于栈中,然后将当前与栈顶元素不匹配的数组[i]元素也亚入栈中。最后判断栈空不空,如果空,则表示栈中所有的元素都匹配成功,如果非空,则说中栈中还有元素匹配不成功。 注意:不用担心) 在( 之前出现的情况,即右括号早与左括号之前先压入栈中,因为如果先遇到右括号而未遇到左括号,无论如何也不可能匹配成功,即栈中的先出现的右括号永远是在栈中的,所以匹配不成功。具体代码如下:

  public static void main(String[] args){  
            //使用字符类Character声明泛型  
            MyArrayStack
    
    
     
     ms=new MyArrayStack
     
     
      
      ();  
            String s="{{}}()(){({){}}}";  
            char[] a=s.toCharArray();  
            for(int i=0;i
      
      
     
     
    
    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值