题目描述
张三今天刚刚学会使用括号,不过他分不清小中大括号和尖括号,不知道怎么使用其他括号,他认为(>以及{]是正确的(其实是错误的),你能帮助他判断括号是否使用正确(匹配)吗?
输入
输入文件包含六组测试数据,每组测试数据是一行只包含’(‘,’)’,’{‘,’}’,’[‘,’]’,’<’,’>’的字符串(长度不超过10000)。
输出
对于每组测试数据,如果使用正确输出yes,否则输出no。每个占一行。
样例输入 复制
[>
([]{<>})
({[<>]})
()
()
()
样例输出 复制
no
yes
yes
yes
yes
yes
代码如下
#include<bits/stdc++.h>
using namespace std;
bool check(char x,char y){
if(x=='('&&y==')') return true;
if(x=='['&&y==']') return true;
if(x=='{'&&y=='}') return true;
if(x=='<'&&y=='>') return true;
return false;
}
int main()
{
int n=6;
stack<char> in;
string str;
for(int i=0;i<n;i++){
str.clear();
in=stack<char>();
bool b=true;
getline(cin,str);
for(int j=0;j<str.length();j++){
if(str[j]=='('||str[j]=='['||str[j]=='{'||str[j]=='<') in.push(str[j]);
else{
if(check(in.top(),str[j])) in.pop();
else b=false;
}
}
if(!in.empty()) b=false;
if(b) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}