测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A7051. 文字处理器

编程题 普及-
知识点

题目描述

给定一个初始字符串 $s$(仅含小写英文字母),依次处理 $Q$ 次操作。共有五类操作:

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$ 行:
- 对于操作 $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$。
上一题 去做题 下一题