#include <bits/stdc++.h>
using namespace std;
const int N=300005;
char a[N];
int n,flag,id[N],bel[N],stk[N],t,tot,cnt[N];
int solve()
{
for (int i=0;i<=n;++i) bel[i]=0,cnt[i]=0;
scanf(" %s",a+1);
n=strlen(a+1);
flag=1;
t=tot=0;
for (int i=1;i<=n;++i)
{
if (a[i]=='(') id[i]=stk[++t]=++tot;
else
{
if (t<1) return 0;
id[i]=stk[t--];
}
}
if (t!=0) return 0;
for (int i=2;i<=n;++i)
{
if (a[i]!='(') continue;
if (a[i-1]=='(') cnt[bel[id[i]]=id[i-1]]++;
else cnt[bel[id[i]]=bel[id[i-1]]]++;
}
if (cnt[0]) return 0;
for (int i=1;i<=n;++i)
if (cnt[i]>2) return 0;
return 1;
}
int main()
{
int T;
for (scanf("%d",&T);T--;)
if (solve()) printf("YES\n");
else printf("NO\n");
return 0;
}
作者:IceTeapoy
链接:https://juejin.cn/post/7223725748782678053
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题解code(待看)
最新推荐文章于 2024-09-06 10:38:06 发布