题目描述
假设表达式中允许圆括号()和方括号[]两种括号,其嵌套的顺序随意,如([])或[()[]([])]等为正确匹配,[(])或([]()或(()))等为错误匹配。
现在给你一个表达式,检验括号是否正确匹配。
输入
一行字符,包含圆括号和方括号,长度小于255。
输出
匹配输出“OK”,不匹配输出“Wrong"。
样例
样例输入1
[(])
样例输出1
Wrong
AC代码
#include<bits/stdc++.h>
#include<stack>
using namespace std;
int main()
{
char a[260],s[260];
scanf("%s",a);
int len=strlen(a);
int i=0,top=0,flag=1;
while(i<len&&flag!=0)
{
if(a[i]=='['||a[i]=='(')
{
s[++top]=a[i];
}
if(a[i]==']')
{
if(s[top]=='[') top--;
else flag=0;
}
if( a[i]==')')
{
if(s[top]=='(') top--;
else flag=0;
}
i++;
}
if(flag==1&&top==0) cout<<"OK";
else cout<<"Wrong";
}