A7051. 文字处理器
编程题
普及-
知识点
题目描述
给定一个初始字符串 $s$(仅含小写英文字母),依次处理 $Q$ 次操作。共有五类操作:
1.
2.
3.
4.
5.
> 说明:
>
> - 所有下标均为 $0$ 开始。
> - 操作 $1,2,3,4$ 输出当前 $s$;操作 $5$ 输出一个整数。
> - “不重叠出现”按从左到右扫描,匹配后跳过被匹配片段继续扫描。
1.
1 t —— 把字符串 $t$ 追加到 $s$ 的末尾,然后输出当前 $s$。2.
2 pos t —— 在下标 $pos$ 位置**之前**插入字符串 $t$($0$ 为开头,$|s|$ 为末尾),然后输出当前 $s$。3.
3 pos len —— 从下标 $pos$ 开始删除长度为 $len$ 的子串(保证合法),然后输出当前 $s$。4.
4 old new —— 将 $s$ 中所有 $old$ 的**不重叠出现**从左到右替换为 $new$,然后输出当前 $s$。其中 $old$ 保证非空,且本题**限定 $new$ 也必须非空**。5.
5 t —— 输出字符串 $t$ 在当前 $s$ 中**第一次出现**的下标($0$ 开始),若不存在则输出 $-1$。> 说明:
>
> - 所有下标均为 $0$ 开始。
> - 操作 $1,2,3,4$ 输出当前 $s$;操作 $5$ 输出一个整数。
> - “不重叠出现”按从左到右扫描,匹配后跳过被匹配片段继续扫描。
输入格式
第一行:初始字符串 $s$。
第二行:一个整数 $Q$。
接下来 $Q$ 行:每行一条操作,格式如题目描述所示。
第二行:一个整数 $Q$。
接下来 $Q$ 行:每行一条操作,格式如题目描述所示。
输出格式
共输出 $Q$ 行:
- 对于操作 $1,2,3,4$,输出当前的 $s$;
- 对于操作 $5$,输出匹配到的下标或 $-1$。
- 对于操作 $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 \le |s| \le 10^5$;
- $1 \le Q \le 2\times 10^5$;
- 所有出现的字符串均为非空的小写英文字母串;
- 操作 $2$ 中 $0 \le pos \le |s|$;
- 操作 $3$ 中保证 $0 \le pos \le |s|-len$;
- 操作 $4$ 中 $old$、$new$ 均非空;
- 为保证可运行性,测试时保证所有操作合法,且在整个过程中「$s$ 的长度」与「累计插入/追加/替换产生的新文本总长度」均不超过 $2\times 10^5$。
- $1 \le Q \le 2\times 10^5$;
- 所有出现的字符串均为非空的小写英文字母串;
- 操作 $2$ 中 $0 \le pos \le |s|$;
- 操作 $3$ 中保证 $0 \le pos \le |s|-len$;
- 操作 $4$ 中 $old$、$new$ 均非空;
- 为保证可运行性,测试时保证所有操作合法,且在整个过程中「$s$ 的长度」与「累计插入/追加/替换产生的新文本总长度」均不超过 $2\times 10^5$。