题目描述
给定一个只包含字符'(',')','{','}','['和']'的字符串,确定输入字符串是否有效。 有效的字符串应同时满足一下两个条件: 1.必须使用相同类型的括号关闭左括号。 2.必须以正确的顺序关闭左括号。 请注意,空字符串也被视为有效。
输入
第一行:一行长度不超过100个字符的待检测字符串
输出
第一行:如果括弧合法则输出Yes,否则输出No
复制样例数据
()样例输出
Yes #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<string> #include<map> #include<algorithm> #include<iomanip> #include<queue> #include<set> #include<stack> using namespace std; int main() { string s=""; int i,l; stack<char>t; cin>>s; getchar(); l=s.length(); if(l==0) cout<<"Yes"<<endl; else if(l%2==1) cout<<"No"<<endl; else { for(i=0;i<l;i++) { if(s[i] == '(' || s[i] == '['||s[i]=='{') t.push(s[i]); else if(s[i] == ')' || s[i] == ']'||s[i]=='}') { if(t.empty()||(t.top()=='('&&s[i]!=')')||(t.top()=='['&&s[i]!=']')||(t.top()=='{'&&s[i]!='}')) { cout<<"No"<<endl; return 0; } else t.pop(); } } if(t.empty()) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }