Problem D: STL——括号匹配
Time Limit: 1 Sec Memory Limit: 128 MB
Description
给出一堆括号,看其是否匹配,例如 ()、()()、(()) 这样的括号就匹配,)(、)()) 而这样的括号就不匹配
Input
每一行代表一组测试样例,每组测试样例只包含'('和')',样例长度不超过100个字符
Output
如果所有的括号都匹配,那么输出YES,否则输出NO
Sample Input
()
)(
Sample Output
YES
NO
HINT
使用STL的stack容易实现。
#include<bits/stdc++.h>using namespace std;stack<char> bracket;int main(){char s[101];while(scanf("%s",s) == 1){int num;num = strlen(s);while( bracket.size() )bracket.pop();int jump = 0;for(int i = 0; i < num; i++){if(s[i] == '('){bracket.push(s[i]);}else if(s[i] == ')'){if(bracket.empty()){cout<<"NO"<<endl;jump++;break;//return 0;}else{bracket.top();bracket.pop();}}}if(!bracket.empty()){cout<<"NO"<<endl;}else{if(jump == 0){cout<<"YES"<<endl;}}}}/*()))()()()((())*/
本文介绍了一个使用STL stack解决括号匹配问题的经典案例。通过遍历输入字符串中的括号,利用栈来检查括号是否正确配对。文章提供了一个简洁高效的C++实现方案。
2471

被折叠的 条评论
为什么被折叠?



