题目链接L1-101 别再来这么多猫娘了!
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
using namespace std;
string s[105], text;
int n, k, ans, a[5005];
int main()
{
// ios::sync_with_stdio(0); // getchar不能用这个
// cin.tie(0);cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++)
cin >> s[i];
cin >> k;
getchar(); // 用getline前吃掉回车
getline(cin, text);
for (int i = 1; i <= n; i++) {
while (1) { // 一个单词会出现多次
int p = text.find(s[i]);
if (p != -1) {
a[++ans] = p;
for (int j = p; j < p+s[i].size(); j++) {
text[j] = '-'; // 违禁词替换为 -
}
}
else break; // 当前违禁词找不到就break,继续找下一个违禁词
}
}
sort(a+1, a+ans+1); // 对所有违禁词的位置 从小到大排序
a[ans+1] = -1; // 防止越界
int cnt = 1;
if (ans < k) {
for (int i = 0; i < text.size(); i++) {
if (i == a[cnt]) { // 根据违禁词的位置输出 <censored>
cout << "<censored>";
cnt++;
}
else if (text[i]!='-'){
cout << text[i];
}
}
}
else {
cout << ans << endl;
cout << "He Xie Ni Quan Jia!" << endl;
}
}