Description
给你一个字符串,只含有‘(’和‘)’,然后你判断一下是否合法
Input
有多组数据,每组数据一行字符串s(|s|<=100),如题目所述
Output
如果合法则输出YES,否则输出NO。
Sample Input
(()())
)(
Sample Output
YES
NO
解题思路:
这主要考察栈这种数据结构,这里我没有自己写,而是使用了STL中的deque
#include<iostream>
#include<deque>
#include<string>
using namespace std;
deque<char> brackets;
int main()
{
string str;
while(cin>>str)
{
string::size_type len = str.length();
string::size_type i;
while(!brackets.empty())
brackets.pop_back();
for(i=0;i<len;++i)
{
if(str[i]==')')
{
if(!brackets.empty())
brackets.pop_back();
else
break;
}
else if(str[i]=='(')
brackets.push_back(str[i]);
}
if(!brackets.empty())
cout<<"NO"<<endl;
else if(len==i)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
最后欢迎大家访问我的个人网站: 1024s