```cpp
#include <bits/stdc++.h>
using namespace std;
string s;
int p=0;
int maxx=0;
int ans=0;
char a[2000000];
int top=0;
int main()
{
cin>>s;
int i=0;
ans=0;
while(i<s.size()){
if(s[i]=='('||s[i]=='['){
top++;
a[top]=s[i];
}
if(s[i]==')'||s[i]==']'){
if(top==0){
i++;
ans=0;
continue;
}
else{
if(a[top]=='('){
if(s[i]==')'){
ans=ans+2;
top--;
if(ans>maxx){
maxx=ans;
p=i-ans+1;
}
}
else{
top=0;
ans=0;
}
}
else if(a[top]=='['){
if(s[i]==']'){
ans=ans+2;
top--;
if(ans>maxx){
maxx=ans;
p=i-ans+1;
}
}
else{
top=0;
ans=0;
}
}
}
}
i++;
}
for(int i=1;i<=top;i++){
p--;
maxx-=2;
}
for(int i=p;i<p+maxx;i++){
cout<<s[i];
}
return 0;
}
```
我也一个点都没有,不知道为什么。。。
by 杨柏涵 @ 2019-03-24 16:42:05
```
#include<iostream>
#include<cstring>
using namespace std;
string str;
int sta,en,dp[1000005],len;
int main()
{
int i,Max=0,Max_len;
cin>>str;
len=str.length();
for(i=1;i<=len-1;i++)
{
if((str[i]==')'&&str[i-dp[i-1]-1]=='(')||(str[i]==']'&&str[i-dp[i-1]-1]=='['))
{
dp[i]=dp[i-1]+dp[i-dp[i-1]-2]+2;
}
if(dp[i]>Max)
{
Max=dp[i];
en=i;
}
}
sta=en-Max+1;
for(i=sta;i<=en;i++)cout<<str[i];
return 0;
}
```
我A了
by Lucas2024 @ 2023-03-18 19:38:08