题意: 给出字符串长度,和一段只含左右括号的字符,并定义该字符序列是好的条件为括号匹配或者只通过移一个括号,能使其完全匹配,如果满足上述条件,则输出Yes,否则输出No
思路:模拟
AC代码:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=2e5+10;
char t[maxn];
int main()
{
int n;scanf("%d",&n);
scanf("%s",&t);
if(n % 2 == 1) puts("No");
else
{
stack<char>s;s.push(t[0]);
for(int i=1;i<n;i++)
{
if(s.size() && s.top() == '(' && t[i] == ')')
s.pop();
else s.push(t[i]);
}
if(s.size() == 2)
{
char now=s.top();
s.pop();
char net=s.top();
if(now =='(' && net ==')') puts("Yes");
else puts("No");
}
else if(s.empty()) puts("Yes");
else puts("No");
}
return 0;
}