#G3005. 屏蔽词

    ID: 995 传统题 1000ms 512MiB 尝试: 15 已通过: 8 难度: 普及− 上传者: 标签>字符串GESP三级字符串函数2026模拟

屏蔽词

题目描述

聊天室要对一个屏蔽词做过滤。给出一行文字 ss 和一个屏蔽词 tt,请把 ss 中出现的 tt 全部替换成同样个数的星号 *。

替换的规则是:从 ss 的开头开始从左往右找 tt,每找到一处就把它替换成 *,然后从这一处的后面接着往右找,直到找不到为止。比较时区分大小写,并且 tt 出现在某个单词的中间也要替换。

请输出一共替换了多少处,以及替换之后的文字。

输入格式

第一行是一行文字 ss,可能含有空格和标点。

第二行是屏蔽词 tt,只由英文字母组成。

输出格式

共两行。

第一行一个整数,表示替换的处数。

第二行是替换之后的文字(如果一处都没有替换,就原样输出 ss)。

样例 #1

样例输入 #1

the cat sat on the mat with another cat
cat

样例输出 #1

2
the *** sat on the mat with another ***

样例 #2

样例输入 #2

aaaaa
aa

样例输出 #2

2
****a

样例解释

样例 22 中,先在开头找到第 11 处 aa(第 1,21, 2 个字符),替换后从第 33 个字符接着找,找到第 22 处 aa(第 3,43, 4 个字符);最后只剩一个 a,找不到了。所以共替换 22 处。

提示

数据范围

  • 对于 30%30\% 的数据:tt 只有 11 个字符;
  • 对于 100%100\% 的数据:1≤∣s∣≤10001 \le |s| \le 1000,1≤∣t∣≤101 \le |t| \le 10,ss 由空格与可见字符组成(不含 *),tt 只由英文字母组成。

提示

  • ss 中有空格,要用 getline 读入整行。
  • s.find(t, pos) 从下标 pos 开始找 t,返回第一次出现的下标;找不到时返回 string::npos,判断时要写 != string::npos。
  • s.replace(pos, len, r) 把从 pos 开始的 len 个字符替换成字符串 r。