SWUST OJ 962: 括号匹配问题(C语言实现)

看了网上一些关于这道题的解法,发现许多都写得很繁琐,简单的题当然简单做啦,所以码了一个比较简洁没有任何技术含量的解法~~
大的思路当然是一样的,’(’ 和 ‘[’ 进栈,遇到 ‘)’ 和 ‘]’ 就判断和栈顶元素是否匹配

题目描述

假设表达式中允许包含两种括号:圆括号和方括号。编写一个算法判断表达式中的括号是否正确配对。

输入

由括号构成的字符串,包含”(“、”)“、”[“和”]“。

输出

如果匹配输出YES,否则输出NO。

样例输入

[([][]())]

样例输出

YES

下面上代码~

AC代码

#include<stdio.h>
char stack[300],ori[300];//用一个stack数组做栈,用一个ori数组存储所有括号
int main()
{
 	int top=0,i=0;
 	scanf("%s",ori);
 	while(ori[i]!='\0')//ori数组没有到最后
 	{
  		if(ori[i]=='('||ori[i]=='[')//压栈
  		{
   			top++;
   			stack[top]=ori[i];
  		}
  		//以下是pop部分
  		else if(ori[i]==']'&&stack[top]=='[')
  			top--;
  		else if(ori[i]==')'&&stack[top]=='(')
   			top--;
  		else//是为了应对这种类型的情况:()))))) 
  		{
   			printf("NO");
   			return 0;
  		}
  		i++;
 	}
 	if(top)//最后top=0的时候表示可以匹配,输出YES,否则输出NO
  		printf("NO");
 	else
  		printf("YES");
  	return 0;
}

传送门

962: 括号匹配问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值