我的主要思路是栈来模拟括号的匹配但是问题是不知道为什么re了
最后几步的思路是看我栈中的括号‘(’的数目和‘)’的数目,由于如果栈中只有‘)’一定不会有‘(’所以全部是‘)’只要/2即可。而‘(’和')’是完全分离开来的,所以数'(',详见代码~~(当时研究了一会,好像想法是对的)~~,看看有没有大佬帮忙debug
代码如下:
#include <iostream>
#include <stack>
#include <cstring>
#include <string>
using namespace std;
int main()
{
stack <char> s;
string a;
int ans = 0;
getline(cin,a);
for(int i = 0 ; a[i] != '\0' ; ++i){
if(!s.empty() && s.top() == '(' && a[i] == ')'){
s.pop();
}
else{
s.push(a[i]);
}
}
if(s.top() == ')'){
ans = s.size() / 2;
}
else{
int temp = 0;
while(s.top() == '('){
temp++;
s.pop();
}
ans = (temp % 2 == 0) ? (temp / 2 + s.size() / 2) : (temp / 2 + (s.size() + 1) / 2 + 1);
}
cout << ans << endl;
return 0;
}