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

蓝桥杯训练—完美的代价

文章目录

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


一、题目

回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
交换的定义是:交换两个相邻的字符
例如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 = 1
            count += int(n / 2) - i
        elif pal[k] == pal[i]:
            for j in range(k, m):
                pal[j], pal[j + 1] = pal[j + 1], pal[j]
                count += 1
            m -= 1
            break
print(count)

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


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

相关文章:

  • VSCode的配置与使用(C/C++)
  • WPF 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决办法
  • Java 和php 在语法上有什么区别
  • Ubuntu 24.04 LTS 开启 SMB 服务,并通过 windows 访问
  • Hive PERCENTILE_APPROX 函数详解
  • 《鸿蒙 HarmonyOS 应用开发从入门到精通(第 2 版)》学习笔记 ——HarmonyOS 环境搭建之安装DevEco Studio
  • 【陕西省乡镇界】面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标无偏移内容测评
  • TCP创建通信前的三次握手(为啥不是两次?)
  • 创建基于Prism框架的WPF应用(NET Framework)项目
  • 打开DevEco Studio后,选择“Create New Project”
  • docker运行Java项目,Kaptcha因为字体缺失没法显示验证码图片
  • Spring Boot自动配置原理:如何实现零配置启动
  • STM32之CubeMX新建工程操作(十八)
  • npm的包管理
  • Redis Windows 解压版安装
  • AIGC视频生成模型:ByteDance的PixelDance模型
  • 51c~缺陷检测~合集2
  • CAN 网络介绍
  • mysql 如何清理磁盘碎片
  • 怎么使用langchain和ollama自己简单开发搭建一个本地有记忆的大模型?