CodeForces..翻转魔术.[简单].[找规律]

news2024/11/24 4:48:13

题目描述:


题目解读:

给定由0,1组成的长度为n的字符串,执行翻转操作,即0变1,1变0;

判断执行一次翻转之后是否为回文。


解题思路:

寻找规律:如果翻转前已经是回文,或者左右对称位置数值不同,那么必然可以通过一次翻转得到回文。

遍历字符串,如果有对称位置数值不同,且不相邻,就输出NO;其余情况输出YES。

遇到数值不同的,先数量+1,然后记录了位置。

最后判断不同的数量是否大于1,然后判断如果位置不相邻,就输出NO。

判断是否相邻这里应该可以简化。

设置flag,初始值为0,第一次遇到不同的,flag变1;

然后向后遍历,如果遇到相同,且flag为1,则flag变2,表示已经有不同且不同之后又出现相同,此时如果后续遇到不同,则必输出NO了;

后续如果遇到不同,且flag=2,则flag变3,表示要输出NO

最后状态下:

flag=0,表示对称位置全相同;

flag=1,表示只有连续对称位置不同;

flag=2,表示只有一个位置不同,其他都相同;

flag=3,表示不连续位置不同。


代码实现:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define MAX 50000 //注意题目中要求的变量取值范围
#include <iostream>
using namespace std;

void Solve() {

	int n; 
	string s;
	int i = 0;
	int flag = 0;
	int flag2 = 0;
	int alength = 0;
	int a[MAX];

	scanf("%d", &n);
	cin >> s;

	for (i = 0; i < n/2; i++) {
		if (s[i]!=s[n-i-1]) {
			flag++;
			a[alength++]=i;
		}
	}
	if (flag > 1) {
		for (i = 0; i < alength -1;i++) {
			if (a[i + 1] - a[i] > 1) {
				flag2 = 1;
				break;
			}
		}
	}
	if (flag2 == 1) printf("NO\n");
	else printf("YES\n");
	return;
}

int main() {
	int t;
	scanf("%d", &t);
	while (t--) Solve();
	return 0;
}

 优化:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <iostream>
using namespace std;

void Solve() {
	int n;
	string s;
	int i = 0;
	int flag = 0;
	scanf("%d", &n);
	cin >> s;
	for (i = 0; i < n / 2; i++) {
		if (s[i] != s[n - i - 1]) {
			if (flag == 0) flag = 1;
			else if (flag == 2) flag = 3;
		}
		else {
			if (flag == 1) flag = 2;
		}
	}
	if (flag == 3) printf("NO\n");
	else printf("YES\n");
	return;
}

int main() {
	int t;
	scanf("%d", &t);
	while (t--) Solve();
	return 0;
}

遇到的错误:越写越复杂了,需要新思路来简化代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/588433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这里有一个源码调试方法,短小精悍,简单粗暴,但足够好用。

文章中有这样的一段描述&#xff1a; 然后有个读者来问我&#xff1a; 是怎么把 JDK 源码中的一行代码给注释掉的&#xff1f; 这个问题确实不错&#xff0c;属于一个偶尔用一下能起到奇效的源码调试技巧。所以我决定写个文章来说明一下这个问题。 但是这个技巧确实非常的简单…

VS输出路径和生成事件

在生成时&#xff0c;常常希望输出文件夹整洁&#xff0c;因此需要设置dll或exe输出位置&#xff0c;同时也希望对一些文件做一些特殊操作 VS的 UI 常用缩写 “./”&#xff1a;代表目前所在的目录。 " . ./"代表上一层目录。 “/”&#xff1a;代表根目录。 生成…

【图像分割】SAM:Segment Anything论文学习V1

论文:2304.Segment Anything 代码&#xff1a; https://github.com/facebookresearch/segment-anything 官网与demo&#xff1a;https://segment-anything.com/ 概要&#xff1a;SAM是什么&#xff1f; 是通用的分割模型 可以通过 模糊的点选择、文字输入、标注框对图片进行标…

Scala学习(十一)---集合高阶

文章目录 1.集合常用方法2.衍生集合3.集合的常用函数 1.集合常用方法 class Test_Func {} object Test_Func{def main(args: Array[String]): Unit {val list List(1, 2, 3, 4, 5)//定义一个List集合val set Set(6, 7, 8, 9)//定义一个Set集合//1.获取集合长度&#xff0c;…

Spring Boot如何与其他技术进行集成,如Spring Cloud、Spring Security、Spring Data等?

Spring Boot与其他技术集成 Spring Boot 是一个快速构建 Spring 应用程序的框架&#xff0c;它提供了自动配置和快速开发的特性&#xff0c;使得开发人员可以更加专注于业务逻辑的实现而不是搭建框架。Spring Boot 可以轻松集成其他 Spring 生态系统中的技术&#xff0c;例如 …

pnpm无法加载文件 (解决方法 )

例如&#xff1a;我现在要运行一个TS的项目&#xff0c;我的电脑上没有安装pnpm&#xff0c;导致我的vscode一直报错无法加载 Pnpm安装 npm install -g pnpm pnpm : 无法加载文件 pnpm : 无法加载文件 C:\Users\HP\AppData\Roaming\npm\pnpm.ps1&#xff0c;因为在此系统上禁…

微念“跌倒”,李子柒也吃不饱

文 | 螳螂观察 作者 | 青月 “共有从前&#xff0c;各有未来。” 杨幂官宣与嘉行传媒结束合作关系的微文&#xff0c;同样适用于现在的微念与李子柒。 李子柒与微念之间的这场MCN机构与网红IP之间由于利益分配的矛盾&#xff0c;经过500多天的博弈后&#xff0c;最终以李子柒…

2.6. Java内存管理与垃圾回收

2.6.1. Java内存模型 在Java中&#xff0c;内存被划分为以下几个区域&#xff1a; 堆&#xff08;Heap&#xff09;&#xff1a;存储对象实例和数组&#xff0c;是垃圾回收的主要区域。栈&#xff08;Stack&#xff09;&#xff1a;存储局部变量和方法调用。每个线程有自己的…

Python scapy二层、三层发送接收数据包

环境&#xff1a; Linux环境&#xff1a;安装scapy&#xff0c; 执行scapy 安装scapy yum install python3-pip (安装python3 pip) pip3 install --upgrade pip yum remove python-pip&#xff08;删除pip&#xff09; pip3 install scapy (安装scapy) 简介&#xff1a; …

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(5月29日论文合集)

文章目录 一、检测相关(12篇)1.1 Linear Object Detection in Document Images using Multiple Object Tracking1.2 Hybrid Energy Based Model in the Feature Space for Out-of-Distribution Detection1.3 BEV-IO: Enhancing Birds-Eye-View 3D Detection with Instance Occu…

原来你是这样的5G 一文了解亚马逊云科技的云上5G专网

根据麦肯锡公司发布的《2021年离散制造业上云调查》报告显示&#xff1a;云转型所带来的IT价值仅占其潜在价值的5&#xff05;&#xff0c;但其业务价值高达95&#xff05;。随着云计算技术的快速发展以及云的IT价值在敏捷性、弹性和经济性几个方面的充分呈现加上同5G技术和应用…

8项seo的日常工作

SEO的日常工作涵盖了一系列任务和活动&#xff0c;旨在优化网站以提高在搜索引擎中的排名和可见性。 以下是SEO的日常工作内容&#xff1a; 关键词研究和优化&#xff1a;定期进行关键词研究&#xff0c;寻找与目标受众和业务相关的热门关键词。优化网站内容、标题、元描述和链…

《Cocos Creator游戏实战》签到日历实现思路

在线体验地址 Cocos Creator | SignCalendar Cocos Store 购买地址&#xff08;如果没有显示&#xff0c;那就是还在审核&#xff09;&#xff1a; https://store.cocos.com/app/detail/4975微店购买地址&#xff1a; https://weidian.com/item.html?itemID6354270477 运行效…

【书评】《写作脑科学》杨滢(@屠龙的胭脂井)

《写作脑科学》是一本介绍写作与脑科学关系的书籍&#xff0c;作者是杨滢。 本书通过对脑科学的研究和分析&#xff0c;揭示了写作的本质和技巧&#xff0c;为写作者提供了有益的指导和启示。 本书的主要内容分为八个部分 第1章 为什么写作跟大脑有关第2章 快速写作&#xff…

Photoshop 2023 Beta 内置Ai绘图功能介绍安装教程

距离Adobe软件公司首次将图像编辑及数字绘画软件Photoshop推出到大众面前已经过去35年&#xff0c;最近该公司又再次书写了属于Photoshop的历史新篇章。 最近&#xff0c;Adobe 宣布 Photoshop&#xff08;Beta&#xff09;迎来更新&#xff0c;新增「创意填充&#xff08;Gen…

3.3. 日期与时间类(Date、Calendar、LocalDate等)

在Java中&#xff0c;我们经常需要处理日期和时间。Java提供了一些类来帮助我们完成这些任务&#xff0c;如Date、Calendar、LocalDate、LocalTime、LocalDateTime和ZonedDateTime等。我们将分别介绍这些类&#xff0c;并给出相应的示例。 1. Date类 Date类是Java提供的一个表…

Redis的地理位置(GEO)+Hypterloglog+事务测试

GEOADD 命令 - 将指定的地理空间位置&#xff08;纬度、经度、名称&#xff09;添加到指定的key中&#xff0c;这些数据将会存储到sorted set 有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度。 当坐标位置超出上述指定范围时&#xff0c;该命令将会返…

chatgpt赋能python:Python中Numpy报错分析

Python中Numpy报错分析 Numpy是Python中重要的开源数值计算库&#xff0c;它提供了数组和矩阵的操作。在使用Numpy的过程中&#xff0c;有时候我们会遇到一些报错信息&#xff0c;本文将对常见的Numpy报错进行分析和解决方法的介绍。 NumPy报错信息 当我们在使用Numpy时出现…

融合PWA技术的小程序:为用户带来原生应用体验

PWA代表“渐进式网络应用”&#xff08;Progressive Web Application&#xff09;。它是一种结合了网页和移动应用程序功能的技术概念。PWA旨在提供类似于原生应用程序的用户体验&#xff0c;包括离线访问、推送通知、后台同步等功能&#xff0c;同时又具有网页的优势&#xff…

AIGC领域优秀的资源汇总(应用、论文、开源项目)

AIGC领域介绍&#xff0c;及一些比较优秀的应用&#xff0c;和论文&#xff0c;开源项目汇总。 AIGC大纲 一、AIGC概念 ​ AIGC&#xff0c;全名“AI generated content”&#xff0c;又称生成式AI&#xff0c;意为人工智能生成内容。例如AI文本续写&#xff0c;文字转图像的…