问题描述
表达式中包含两种括号:()和[],嵌套层次不限定,只需要匹配正确。在如此规则下,检验一个给定的表达式是否正确匹配。
输入格式
一行,即为表达式
输出格式
匹配就输出OK,不匹配就输出Wrong
输入样例1
[([][])]
输出样例1
OK
输入样例2
[(])
输出样例2
Wrong
注意栈容器的使用方法
#include<bits/stdc++.h>
using namespace std;
stack<char> mystack;
string st;
int len;
bool check()
{
int i,sum=0;
for(i=0;i<len;i++)
{
if(st[i]=='(') {
mystack.push(st[i]);
sum++;
}
if(st[i]==')') {
if(sum==0) return false;
if(mystack.top()!='(') return false;
mystack.pop();
sum--;
}
if(st[i]=='[') {
mystack.push(st[i]);
sum++;
}
if(st[i]==']') {
if(sum==0) return false;
if(mystack.top()!='[') return false;
mystack.pop();
sum--;
}
}
if(sum!=0) return false;
return true;
}
int main()
{
cin>>st;
len=st.size();
if(check()==true ) cout<<"OK";
else cout<<"Wrong";
}