蓝桥杯训练—完美的代价

server/2025/1/23 4:43:23/

文章目录

  • 一、题目
  • 二、示例
  • 三、解析
  • 四、代码


一、题目

回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
交换的定义是:交换两个相邻的字符
例如mamad
第一次交换ad:mamda
第二次交换md:madma
第三次交换ma:madam
输入格式:
输入一行,是一个字符串,长度为n,只包括小写字母
输出格式:
如果可能,输出最少的交换次数
否则输出impossible

二、示例

输入:

mamad

输出:

3

三、解析

无需考虑字符串的长度,当每个字母的出现次数都为偶数时,该字符串必定能构成回文串;当字符串中出现奇数个出现次数为奇数的字母时,也能构成回文串;但是当出现偶数个出现次数为奇数的字母时则不能构成回文串。
基于此,可以统计字母出现的次数,以及出现次数为奇数的字母的个数。

四、代码

python代码:

pal = list(input())
n = len(pal)
count = flag = 0
m = n - 1
for i in range(m):for k in range(m, i - 1, -1):if k == i:if n % 2 == 0 or flag == 1:print("impossible")exit()flag = 1count += int(n / 2) - ielif pal[k] == pal[i]:for j in range(k, m):pal[j], pal[j + 1] = pal[j + 1], pal[j]count += 1m -= 1break
print(count)

运行结果:
在这里插入图片描述


http://www.ppmy.cn/server/160646.html

相关文章

PyTest自学 - 将多个用例组织在一个类中

<< 返回目录 1 PyTest自学 - 将多个用例组织在一个类中 pytest支持并不限制一个用例占用一个文件&#xff0c;实际使用中可以一个用例一个文件&#xff0c;也可以多个用例一个文件。   建议&#xff1a; 1类用例放1个文件&#xff1a; 将1个功能块的用例放到1个文件中…

QT 中 UDP 的使用

目录 一、UDP 简介 二、QT 中 UDP 编程的基本步骤 &#xff08;一&#xff09;包含头文件 &#xff08;二&#xff09;创建 UDP 套接字对象 &#xff08;三&#xff09;绑定端口 &#xff08;四&#xff09;发送数据 &#xff08;五&#xff09;接收数据 三、完整示例代…

Windows 服务程序实现鼠标模拟

cpp #include <windows.h> #include <fstream> #include <string> #include <tchar.h> #include <thread> #include <vector> #define SERVICE_NAME _T("MouseSimulationService") // 全局变量 SERVICE_STATUS g_Servi…

工业网口相机:如何通过调整网口参数设置,优化图像传输和网络性能,达到最大帧率

项目场景 工业相机是常用与工业视觉领域的常用专业视觉核心部件&#xff0c;拥有多种属性&#xff0c;是机器视觉系统中的核心部件&#xff0c;具有不可替代的重要功能。 工业相机已经被广泛应用于工业生产线在线检测、智能交通,机器视觉,科研,军事科学,航天航空等众多领域 …

springBoot tomcat

一、配置文件 server:#配置端口port: 9999tomcat: #对tomcat配置threads:max: 10 #最大的工作线程&#xff0c; 默认是200min-spare: 5 #最小工作线程, 默认是10accept-count: 200 #tomcat启动的线程达到最大值, 接受排队的请求个数,默认100max-connections: 2000 #最大连接数…

cmake foreach 条件判断

格式 foreach(<loop_var> <items>)<commands> endforeach()其中<items>是由空格或空白分隔的项目列表。foreach和匹配的endforeach之间的所有命令都被记录下来而不被调用。一旦计算完endforeach&#xff0c;将为<items>中的每个项目调用一次记录…

WebSocket知识点笔记(一)

WebSocket ​ WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务端之间的消息传递更加高效&#xff0c;允许服务器主动向客户端推送数据。 一.WebSocket全双工通信 WebSocket提供了真正的双向通信&#xff0c;客户端和服务端可以同时发送和接收消息 …

JDBC实验测试

一、语言和环境 实现语言&#xff1a;Java。 环境要求&#xff1a;IDEA2023.3、JDK 17 、MySQL8.0、Navicat 16 for MySQL。 二、技术要求 该系统采用 SWING 技术配合 JDBC 使用 JAVA 编程语言完成桌面应用开发。 三、功能要求 某电商公司为了方便客服查看用户的订单信…