这个题目就是求左右括号问题,有可能是右括号先出现,然后左括号再出现的情况。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main(){
char str[105];
while(scanf("%s",&str)!=EOF){
bool is=true;
int higt = 0, left = 0,right = 0,flag = 0;
int u = strlen(str);
for(int i = 0;i < u; i++){
if(str[i]=='('){
left++;
flag++;
}else if(str[i]==')'){
right++;
flag--;
}
if(flag<0) is=false;
if(flag>higt) higt = flag;
}
if(is)
{
if(left == right){
printf("YES %d\n",higt);
}else if(left!=right){
printf("NO\n");
}
}
else printf("NO\n");
}
}