A96433.文字处理器
普及-
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
给定一个初始字符串 s(仅含小写英文字母),依次处理 Q 次操作。共有五类操作:
1 t—— 把字符串 t 追加到 s 的末尾,然后输出当前 s。2 pos t—— 在下标 pos 位置之前插入字符串 t(0 为开头,∣s∣ 为末尾),然后输出当前 s。3 pos len—— 从下标 pos 开始删除长度为 len 的子串(保证合法),然后输出当前 s。4 old new—— 将 s 中所有 old 的不重叠出现从左到右替换为 new,然后输出当前 s。其中 old 保证非空,且本题限定 new 也必须非空。5 t—— 输出字符串 t 在当前 s 中第一次出现的下标(0 开始),若不存在则输出 −1。
说明:
- 所有下标均为 0 开始。
- 操作 1,2,3,4 输出当前 s;操作 5 输出一个整数。
- “不重叠出现”按从左到右扫描,匹配后跳过被匹配片段继续扫描。
输入格式
第一行:初始字符串 s。
第二行:一个整数 Q。
接下来 Q 行:每行一条操作,格式如题目描述所示。
输出格式
共输出 Q 行:
- 对于操作 1,2,3,4,输出当前的 s;
- 对于操作 5,输出匹配到的下标或 −1。
输入输出样例
输入#1
hello 4 2 0 hi 4 l x 5 hihe 3 2 3
输出#1
hihello hihexxo 0 hixo
说明/提示
-
1≤∣s∣≤105;
-
1≤Q≤2×105;
-
所有出现的字符串均为非空的小写英文字母串;
-
操作 2 中 0≤pos≤∣s∣;
-
操作 3 中保证 0≤pos≤∣s∣−len;
-
操作 4 中 old、new 均非空;
-
为保证可运行性,测试时保证所有操作合法,且在整个过程中「s 的长度」与「累计插入/追加/替换产生的新文本总长度」均不超过 2×105。