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;
}
}
}
}
/*
())
)()()
()
((())
*/