トピック:完全な括弧の一致の数を数えます。
アイデア:スタックの使用。
注:ここでは、先頭が ")"の場合の取引は使用できません。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stack>
#include<cstring>
using namespace std;
const int maxa=1e5+10;
char a[maxa];
int deal(){
int temp=0;
for(int i=0;i<strlen(a);i++)
if(a[i]=='('){
temp=i;
break;
}
return temp;
}
int main(){
stack<char>s;
while(cin>>a){
int ans=0;
int temp=deal();//去除前缀')';
for(int i=temp;i<strlen(a);i++){
if(a[i]=='(') s.push(a[i]);
else if(a[i]==')'&&!s.empty()){
s.pop();
ans++;
}
}
printf("%d\n",ans);
}
}