Time Limit: 1000MS Memory limit: 65536K
题目描述
给你一串字符,不超过
50
个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的
( ) ,[ ],{ }
是否匹配。
输入
输入数据有多组,处理到文件结束。
输出
如果匹配就输出“
yes
”,不匹配输出“
no
”
示例输入
sin(20+10) {[}]
示例输出
yes no
提示
#include<string.h>
#include<stdlib.h>
#include<iostream>
#include<stack>
using namespace std;
int match(char a[])
{
stack<char>s;
int n=strlen(a);
for(int i=0;i<n;i++)
{
switch (a[i])
{
case'[':
case'(':
case '{':
case')':if(!s.empty()&&s.top()=='(')
s.pop();
else return 0;break;
case'}':if(!s.empty()&&s.top()=='{')
s.pop();
else return 0;break;
case']':if(!s.empty()&&s.top()=='[')
s.pop();
else return 0;break;
}
}
if(s.empty())
return 1;
else return 0;
}
int main()
{
char a[55];
while(gets(a))
{
int o=match(a);
if(o==0)
cout<<"no"<<endl;
else cout<<"yes"<<endl;
}
return 0;
}