描述
给定一个字符串,字符串只包含两种字符:左括号“(”和右括号”)”。请判断这些括号是否能匹配。如果能则输出Yes,不能则输出No。
输入
一行,括号序列(一个字符串)
输出
Yes/No
样例输入
((()))()()
样例输出
Yes
#include <iostream>
#include <string.h>
#define max 105
using namespace std;
class line{
char date[max];
int top;
public:
line();
void inset(char a);
int dele();
int empty();
};
line::line()
{
top=-1;
}
int line::dele(){
if(top==-1)
return 0;
else top--;
return 1;
}
void line::inset(char a){
date[++top]=a;
}
int line::empty(){
if(top==-1) return 1;
else return 0;
}
int main()
{
line line1;
string tem;
cin>>tem;
for(int i=0;i<tem.length();i++){
if(tem[0]==')'){
cout<<"No"<<endl;
return 0;
}
if(tem[i]=='('){
line1.inset(tem[i]);
}
if(tem[i]==')'){
if(line1.dele()==0){
cout<<"No"<<endl;
return 0;
}
}
}
if(line1.empty()==1)
cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}