注意在用iostream时 数组名不能命名为next和last在iostream已经定义!
cur代表光标指向当前最新已有的字母(开始时指向虚拟头结点 Next[0]指向0)
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=100000+5;
char s[maxn];
int Next[maxn];
int cur,Last;
int main(){
while(scanf("%s",s+1)==1){
int n=strlen(s+1);
Last=cur=0;
Next[0]=0;
for(int i=1;i<=n;i++){
if(s[i]=='[') cur=0;
else if(s[i]==']') cur=Last;
else {
Next[i]=Next[cur];
Next[cur]=i;
if(cur==Last) Last=i;
cur=i;
}
}
for(int i=Next[0];i!=0;i=Next[i]){
cout<<s[i];
}
cout<<endl;
}
return 0;
}
版权声明:本文为qq_41093189原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。