专栏文章

题解:P14172 【MX-X23-T2】括号串

P14172题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minoj0fu
此快照首次捕获于
2025/12/02 05:46
3 个月前
此快照最后确认于
2025/12/02 05:46
3 个月前
查看原文

思路:

用栈存储,最后判断一下剩下的括号即可。

AC code:

CPP
#include<bits/stdc++.h>
using namespace std;
long long t,n,k;
string s;
struct node
{
	char c;
	int val;
}a[100010];
bool cmp(node aa,node bb)
{
	return aa.val<bb.val;
}
int main()
{
	cin>>t;
	while(t--)
	{
	//	memset(a,{'1',0},sizeof(a));
		k=0;
		cin>>n;
		cin>>s;
		stack<int> t,p;
		string ss="";
		for(int i=0;i<n;i++)
		{
			if(s[i]=='(') 
			{		
				t.push(1);
				p.push(i);
			}
			else 
			{
				if(!t.empty())
				{
					t.pop();
					p.pop();
				}
				else
				{
				
					a[++k]={')',i};
				} 
			}
		}
		while(!t.empty())
		{
			int e=p.top();
			p.pop();
			t.pop();
			a[++k]={'(',e};
		}
		sort(a+1,a+1+k,cmp);
		if(k==2||k==0)
		{
			if(k==0)
			{
				cout<<"Yes"<<endl;		
			}
			else if(abs(a[1].val-a[2].val)==1&&a[1].c==')'&&a[2].c=='(')
			{
				cout<<"Yes"<<endl;
			}
			else
			{
				cout<<"No"<<endl;
			}
		}	
		else
		{
			cout<<"No"<<endl;
		}
	}
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...