AT_digitalarts_1 C-Filter
题目描述
对安全性感兴趣的高桥君是一位希望进入 Digital Arts 株式会社工作的青年。
为了在面试中展示自己,他打算用自己擅长的编程能力制作一款过滤软件“C-Filter”。
“C-Filter”是一款软件,如果给定的字符串 $s$ 中存在与预先注册的“NG词”完全匹配的字符串,则将该字符串用与其长度相同数量的 `*` 替换后输出。这个替换字符串的过程称为过滤。
“NG词”由半角小写英文字母和 `*` 组成。`*` 可以匹配任意一个半角小写英文字母。
例如,`myonmyon` 可以与 NG 词 `myo*myon` 匹配。
但是,NG 词只针对每个单词分别应用,因此,`myo myon` 不会与 NG 词 `myo*myon` 匹配。
此外,NG 词必须与某个单词完全一致才能匹配。
例如,`abcde` 不会与 NG 词 `abc`、`bcd` 或 `cde` 匹配。
给定字符串 $s$ 和 NG 词,请输出 C-Filter 过滤后的字符串。
输入按以下格式从标准输入给出。
> $s$ $N$ $t_{1}$ : : $t_{N}$
1. 输入共 $N+2$ 行。
2. 第 $1$ 行给出长度不少于 $1$ 且不超过 $1,000$ 的字符串 $s$。
- $s$ 是需要过滤的目标字符串,由若干个用半角空格分隔的单词组成。
5. 第 $2$ 行给出一个整数 $N$,表示 NG 词的个数,$0 \leq N \leq 50$。
6. 第 $3$ 行到第 $N+2$ 行,每行给出一个 NG 词 $t_{i}$,$1 \leq i \leq N$。
- 字符串 $t_{i}$ 由半角小写英文字母和 `*` 组成。
- 字符串 $t_{i}$ 的长度不少于 $1$ 且不超过 $20$。
- NG 词中的 `*` 可以匹配除半角空格外的任意一个半角小写英文字母。
请输出用 C-Filter 过滤后的字符串 $s$,输出一行。
最后请输出换行符。
示例:
```
abc aaa ababa abcba abc
2
abc
**a**
```
```
*** aaa ***** abcba ***
```
- NG 词有 `abc` 和 `**a**` 两个。
- 第 $1$ 个和第 $5$ 个单词 `abc` 与 NG 词 `abc` 匹配,因此输出为 `***`。
- 第 $3$ 个单词 `ababa` 与 NG 词 `**a**` 匹配,因此输出为 `*****`。
```
aaaa aaa aaaaaa aaaa
3
a
aa
aaa
```
```
aaaa *** aaaaaa aaaa
```
- 只需考虑完全匹配的情况,因此 `aaaa` 和 `aaaaa` 不需要替换。
```
i have a pen
1
*
```
```
* have * pen
```
- 只有长度为 $1$ 的单词会被识别为 NG 词。
```
digital arts
1
digital*arts
```
```
digital arts
```
- 半角空格不会被 `*` 匹配。
输入格式
无
输出格式
无
说明/提示
无
由 ChatGPT 4.1 翻译