【题解】悲剧的文本
题面
前言
还真是挺悲剧的,链表模板题后面跟一个链表应用题……
正文
我们考虑一下 nxt
数组的本质是什么
对于单链表来说(虽然云落超级喜欢用双链表,就像火腿肠爱平衡树那样),\(nxt_i\) 对应的就是 \(i\) 的后继
所以尽管字符串中存在 “[”或“]”,但是本质上不影响我们建链改链的操作
在代码中,不过是一个分支结构……
直接做做完力!
代码
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=1e5+10;
string s;
int nxt[maxn];
int main(){
while(cin>>s){
memset(nxt,0,sizeof(nxt));
int len=s.length(),cur=0,last=0;
s=' '+s;
nxt[0]=0;
for(int i=1;i<=len;i++){
if(s[i]=='['){
cur=0;
}else if(s[i]==']'){
cur=last;
}else{
nxt[i]=nxt[cur];
nxt[cur]=i;
if(cur==last){
last=i;
}
cur=i;
}
}
for(int i=nxt[0];i!=0;i=nxt[i]){
cout<<s[i];
}
cout<<endl;
}
return 0;
}
后记
一边切捏——
好 ~ 开 ~ 心 ~
完结撒花!