第19届PTA天梯赛 别再来这么多猫娘了

        这道题没有AC,感觉有一点点怪,可能是我理解能力有点差吧,总是不太理解题目到底是个什么思路去解决这道题的。就拿原文来讲

从左到右处理文本,违禁词则按照输入顺序依次处理;对于有重叠的情况,无论计数还是替换,查找完成后从违禁词末尾继续处理

这句话我现在还没搞懂什么意思,我试了两种途径,都没有AC,最高的拿到了14分,就是有一分拿不到,我是先遍历违禁词呢,还是先遍历文本呢,两种方法我都试了,还都是不行

思路就是直接模拟,具体细节上可能导致丢分吧,一些样例过不了,这道题样例也比较多,估计出题人也觉得大家不太好理解,多搞几个样例吧~

测试样例1

上下分别 对应输入 输出

5
MaoNiang
SeQing
BaoLi
WeiGui
BuHeShi
4
BianCheng MaoNiang ba! WeiGui De Hua Ye Keyi Shuo! BuYao BaoLi NeiRong.
BianCheng <censored> ba! <censored> De Hua Ye Keyi Shuo! BuYao <censored> NeiRong.

 样例2 3 不说了,正常都能过 主要是4 5,很怪,不知道怎么顺序

 样例4

2
AB
BB
3
AAABBB
AA<censored><censored>

 样例5

2
BB
AB
3
AAABBB
AAA<censored>B

我们来看一下样例4

 第一种方式  先遍历文本,然后遍历违禁词

AA AB BB   抓到一个 改成<censored>  接着 AA AB BB   抓到一个 BB 接着改成 <censored>

输出AA<censored><censored>  没问题,是不是就是这种方式 没准,不急我们看看5

还是先遍历文本 

AAABBB  不应该抓到AB 改成<censored>吗 不是了 他直接找的BB 我···

很奇怪,写了几种方式都试了试,还是AC不了,大家点点我,没准你们一句话就能解救我于水火之中~~~

代码附上,虽然没有AC 害~

// #include<iostream>
// #include<vector>
// #include<string>
// #include<algorithm>
// using namespace std;
// int main()
// {
// 	int n;
// 	cin >> n;
// 	vector<string> se;
// 	string str;
// 	for (int i = 0; i < n; i++)
// 	{
// 		cin >> str;
// 		se.push_back(str);
// 	}
// 	int limits, num = 0;
// 	cin >> limits;
// 	getchar();
// 	getline(cin, str);
// 	for (auto i : se)
// 	{
// 		int cnt = str.find(i);
// 		while (cnt != -1)
// 		{
// 			num++;
// 			cnt = str.find(i, cnt + i.size());
// 		}
// 	}
// 	if (num >= limits)
// 	{
// 		cout << num << "\n";
// 		cout << "He Xie Ni Quan Jia!";
// 	}
// 	else
// 	{
// 		for (auto i : se)
// 		{
// 			int cnt = str.find(i);
// 			while (cnt != -1)
// 			{
// 				str.replace(cnt, i.size(), "<censored>");
// 				cnt = str.find(i, cnt + 10);
// 			}
// 		}
// 		cout << str;
// 	}
// 	return 0;
// }

#include<vector>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
	int n;
	cin >> n;
	vector<string> ve;
	string str;
	for (int i = 0; i < n; i++)
	{
		cin >> str;
		ve.push_back(str);
	}
	int limits, num = 0;
	cin >> limits;
	getchar();
	getline(cin, str);
	for (int i = 0; i < str.size(); i++)
	{
		for (auto it : ve)
		{
			string s = str.substr(i, it.size());
			if (s == it)
			{
				num++;
				str.replace(i, it.size(), "<censored>");
				i = i + 10 - 1;
				break;
			}
		}
	}
	if (num >= limits)
	{
		cout << num << "\n";
		cout << "He Xie Ni Quan Jia!";
	}
	else
		cout << str;

	//for (auto i : se)
	//{
	//	int cnt = str.find(i);
	//	while (cnt != -1)
	//	{
	//		num++;
	//		cnt = str.find(i, cnt + i.size());
	//	}
	//}
	//if (num >= limits)
	//{
	//	cout << num << "\n";
	//	cout << "He Xie Ni Quan Jia!";
	//}
	//else
	//{
	//	for (auto i : se)
	//	{
	//		int cnt = str.find(i);
	//		while (cnt != -1)
	//		{
	//			str.replace(cnt, i.size(), "<censored>");
	//			cnt = str.find(i, cnt + 10);
	//		}
	//	}
	//	cout << str;
	//}
	return 0;
}

大家不懂多多评论区交流,互相请教互相帮助,没准别人一句话就点通你(亲身经历)

大佬看到,知道我哪里的问题,点点我  我恨困惑1

 期待和大家共同加油,希望大家不断进步!

相关推荐

  1. 19PTA天梯 这么

    2024-04-23 19:44:01       36 阅读
  2. 2021PTA天梯

    2024-04-23 19:44:01       42 阅读
  3. pta团体程序设计天梯——练习集(1-10题)

    2024-04-23 19:44:01       52 阅读
  4. 2024年天府杯B题

    2024-04-23 19:44:01       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 19:44:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 19:44:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 19:44:01       82 阅读
  4. Python语言-面向对象

    2024-04-23 19:44:01       91 阅读

热门阅读

  1. 商城数据库----3

    2024-04-23 19:44:01       36 阅读
  2. 02_c/c++开源库 json解析jsoncpp库

    2024-04-23 19:44:01       37 阅读
  3. Linux中安装MySQL数据库(Red Hat7.9安装MySQL5.7数据库)

    2024-04-23 19:44:01       31 阅读
  4. K8s: 在Pod中将configmap数据注入容器

    2024-04-23 19:44:01       34 阅读
  5. iOS 将字符串分割成单个字符| 字符串转成数组

    2024-04-23 19:44:01       28 阅读
  6. flink on k8s部署

    2024-04-23 19:44:01       34 阅读
  7. C# winform 阿特拉斯fp6000拧紧枪开发

    2024-04-23 19:44:01       37 阅读