【题解】悲剧的文本

题面

题目传送门

前言

还真是挺悲剧的,链表模板题后面跟一个链表应用题……

正文

我们考虑一下 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;
}

后记

一边切捏——

好 ~ 开 ~ 心 ~

完结撒花!

posted @ 2024-12-12 23:04  sunxuhetai  阅读(12)  评论(0)    收藏  举报