当前位置: 首页 > article >正文

传智杯 第六届-复赛-第二场-B

题目描述:

        小红拿到了一个字符串,她可以操作最多1次:修改任意一个字符。小红希望操作结束后,长度为3的回文连续子串的数量尽可能多。请你求出这个数量。

输入描述:

        一个仅包含小写字母的字符串。长度不超过100。

输出描述:

        一个整数,代表操作结束后,长度为3的回文连续子串的数量的最大值。

 

示例1

输入:

abcde

输出:

1

说明:

将第二个字符修改为'd'即可,这样字符串变成"adcde",共包含1个长度为3的回文子串。

解题思路:

        由于字符串的长度很小,可以直接依次更改每个字符,分别更改为上上个字符和下下个字符,然后分别判断每次更改后可以组成多少个回文子串。

注意:

        ①更改后需要对更改的字符复原,才能进行下一次更改。

代码:

#include<iostream>
#include<string>
#include<math.h>
#define int long long
using namespace std;

//查找
int find(string str)
{
	int count = 0;
	for (int i = 0;i < str.length() - 2;i++)
	{
		if (str[i] == str[i + 2])
		{
			count++;
		}
	}
	return count;
}

signed  main()
{
	//输入
	string str;
	getline(cin, str);

	int ma = 0;    //记录最大的回文子串数
	//依次字符、查找
	for (int i = 0;i < str.length();i++)
	{
		//有前面的字符
		if (i > 1)
		{
			char temp = str[i];   
			str[i] = str[i - 2];   //更改
			ma = max(ma, find(str));
			str[i] = temp;   //恢复
		}

		//有后面的字符
		if (i < str.length() - 2)
		{
			char temp = str[i];
			str[i] = str[i + 2];   //更改
			ma = max(ma, find(str));
			str[i] = temp;   //恢复
		}
	}
	cout << ma << endl;

	system("pause");
}


http://www.kler.cn/a/381832.html

相关文章:

  • 基于STM32单片机太阳能充电循迹避障小车
  • Linux /proc/[pid]/task/[tid]/sched文件解析
  • Qt Creator 的F5、F10 和 F11 调试快捷键
  • Spring Boot框架下的教育导师匹配系统
  • 提交linux kernel patch流程
  • 无人机之中继通信技术篇
  • Rust 跨平台构建与部署实战:构建并部署跨平台应用
  • SpringCloudGateway — 网关路由
  • 宝塔Linux面板安装PHP扩展失败报wget: unable to resolve host address ‘download.bt.cn’
  • VLAN高级+以太网安全
  • C++原创游戏宝强越狱第二季即将回归
  • Kafka 之消息广播消费
  • C++简单工厂模式
  • vue 3:监听器
  • Chrome与火狐哪个浏览器的性能表现更好
  • 计算机性能监控体系:Quark2.0
  • 用例设计方法之等价类划分法
  • Linux常用命令(你一定用得上!)
  • 基于Redis缓存机制实现高并发接口调试
  • 【大数据学习 | kafka】消费者的分区分配规则
  • WEB 应用防护系统的部署方式
  • 软件工程3.0和软件工程2.0的区别
  • 深度学习注意力机制类型总结pytorch实现代码
  • Socket篇(学习前言)
  • RabbitMQ自动发送消息工具(自动化测试RabbitMQ)
  • 群控系统服务端开发模式-应用开发-文件上传功能开发