多组字符进行括号匹配(非数组栈实现)

算法思想

                           1.把所有的括号都存储进去,然后判断各个括号类型的数目(各种左括号,右括号的数目)

                           2.当出现右括号时我们需要判断其前一个括号是否是另一个的左括号

                             if(a[i]==']'&&a[i-1]=='(')          else if(a[i]==')'&&a[i-1]=='[')

                          3.判断各种括号的左右括号数目是否相等

 

算法实现

static void check(int T) 
	{
		char a[]=new char[100];
		Scanner input=new Scanner(System.in);
		String s[]=new String[T];
		for(int i=0;i<T;i++)
			 s[i]=input.nextLine();
		for(int j=0;j<T;j++)
		{
			int flag=1;
			int fz=0,fy=0,yz=0,yy=0;
			for(int i=0;i<s[j].length();i++)
			{
				a[i]=s[j].charAt(i);
				switch(a[i])
				{
					case '(' :
						fz++;
						break;
					case '[' :
						yz++;
						break;
					case ')' :
						yy++;
						break;
					case ']' :
						fy++;
						break;
				}
				if(i==0)
					continue;
				if(a[i]==']'&&a[i-1]=='(')
				{
					flag=0;
					break;
				}
				else if(a[i]==')'&&a[i-1]=='[')
				{
					flag=0;
					break;
				}
			}
			
			if(fz!=fy||yz!=yy)
				flag=0;
			if(flag==1)
				System.out.println("yes");
			else
				System.out.println("no");
		}
	}

 

                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值