1461: 【入门】括号匹配(1486)

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:29 解决:15

题目描述

输入一个由()[]四种符号构成的字符串。判断其中的括号是否匹配,是,就输出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;
}