→题目链接←
说是栈,其实就用一个变量记录下就好,我用的sum
碰到(就++,碰到)就--
当sum为负时一定是不合法的,这时候一定要改一下,所以ans++
然后令sum等于1,因为把一个不合法的)改成了(
最后如果sum大于0,就说明还要改sum/2次
所以最后ans=ans+sum/2
代码:
#include<iostream>
#include<vector>
#include<queue>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
string s;
int ans=0,sum=0;
int main(){
cin>>s;
for(int i=0; i<s.size(); i++){
if(s[i]=='(')sum++;
else sum--;
if(sum<0){
sum+=2;
ans++;
}
}
printf("%d\n",ans+sum/2);
return 0;
}