#include<bits/stdc++.h>
using namespace std;
int n,ans,num;
int a[1000001];
char s[1000001];
int main()
{
scanf("%s",s+1);
n=strlen(s+1);
for(int i=2; i<=n; i++){
if(s[i]==')'&&s[i-a[i-1]-1]=='('||s[i]==']'&&s[i-a[i-1]-1]=='[')
{
a[i]=a[i-1]+2+a[i-a[i-1]-2];
// i 与 i-a[i-1]-1 包围的字符串加上 i-a[i-1]-2 后的恢复字符串
if(a[i]>ans)
{
ans=a[i];
num=i;
}
}
}
for(int i=num-a[num]+1; i<=num; i++)
cout<<s[i];
}
标签:匹配,int,1000001,括号,num,ans,P1944
From: https://www.cnblogs.com/dadidididi/p/16739528.html