1461: 【入门】括号匹配(1486)
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:30
解决:16
题目描述
输入一个由()[]四种符号构成的字符串。判断其中的括号是否匹配,是,就输出yes,否则输出no。
比如:输入“([])”、“([()])”、“[((()))]”、“()[][][]()[]”这几个字符串(双引号内部的内容),我们都算是匹配的。
再比如:输入“([)”、“([)]”、“([(]))”这几个字符串,我们都认为是不匹配的。
比如:输入“([])”、“([()])”、“[((()))]”、“()[][][]()[]”这几个字符串(双引号内部的内容),我们都算是匹配的。
再比如:输入“([)”、“([)]”、“([(]))”这几个字符串,我们都认为是不匹配的。
输入
一个由()[]四种符号构成的字符串
输出
如果匹配,请输出yes,如果不匹配,请输出no
样例输入 复制
([])
样例输出 复制
yes
提示
#include<bits/stdc++.h>
using namespace std;
stack<char> s;
string t;
int i;
int main(){
cin>>t;
s.push('*');
for(i=0;i<t.size();i++) {
if(t[i]=='('||t[i]=='[') {
s.push(t[i]);
}else{
if(t[i]==')'&&s.top()=='('||t[i]==']'&&s.top()=='['){
s.pop();
}else{
cout<<"no";
return 0;
}
}
}
if (s.size()==1) {
cout<<"yes";
}else {
cout<<"no";
}
return 0;
}