hrbust-1170-语法检查-括号匹配【栈应用】
检索括号匹配
学会多行输入,每行检测方式。
还有栈。【先进后出】【后进先出】
#include<bits/stdc++.h>
using namespace std;
char a[10000][10000];
int main()
{
while(scanf("%s",&a[0])!=EOF)
{
int i=0;
while(1)
{
i++;
scanf("%s",a[i]);
if(strcmp(a[i],"Ctrl+Z")==0)
break;
}
int flag=1;
stack<char>s[2];
for(int j=0; j<=i; j++)//i+1行
{
for(int k=0; a[j][k]!='\0'; k++)
{
if(a[j][k]=='(')
{
s[0].push(a[j][k]);
continue;
}
if(a[j][k]=='{')
{
s[1].push(a[j][k]);
continue;
}
if(a[j][k]==')'&&!s[0].empty())
{
s[0].pop();
continue;
}
if(a[j][k]==')'&&s[0].empty())
{
flag=0;
continue;
}
if(a[j][k]=='}'&&!s[1].empty())
{
s[1].pop();
continue;
}
if(a[j][k]=='}'&&s[1].empty())
{
flag=0;
continue;
}
}
}
if(flag)
{
if(s[0].empty()&&s[1].empty())
cout<<"Right"<<endl;
else
cout<<"Wrong"<<endl;
}
else
cout<<"Wrong"<<endl;
}
}