一、题目

问题描述
  回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
  交换的定义是:交换两个相邻的字符
  例如mamad
  第一次交换 ad : mamda
  第二次交换 md : madma
  第三次交换 ma : madam (回文!完美!)
输入格式
  第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
  第二行是一个字符串,长度为N.只包含小写字母
输出格式
  如果可能,输出最少的交换次数。
  否则输出Impossible
样例输入
5
mamad
样例输出
3

二、python代码

不必考虑是字符串长度为奇数偶数。只需考虑,出现次数为奇数的字母个数,若个数 等于或大于2 ,则不能构成回文。

当所有字母次数都为偶数时,一定可以构成回文
abbchca
h出现次数为1,且只有h出现次数为奇数,能构成回文
abbbchca
b出现次数为3,h为1,则有两个奇数字母,不能构成回文
abbchhca
所有字母出现次数都为偶数,必定可以构成回文

代码:

# coding=gbk
"""
作者:川川
@时间  : 2022/1/19 18:30
"""
n = int(input())pal = list(input())count = flag = 0  # count计数,flag判断是否已经有一个单独的奇个数的字符了m = n - 1for i in range(m):  # 从头遍历到倒数第二个字符for k in range(m, i - 1, -1):  # 从后面往前一直到i寻找和pal[i]相同的pal[k]if k == i:  # 如果找不到相同的if n % 2 == 0 or flag == 1:  # impossible的两种情况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 += 1  # 计数器加1m -= 1  # 最后拍好序的不在进行比较break
print(count)
# 5  mamad
# 24  iloveyouxxxxxxxxuoyevoli
# 9  ffdejjell

蓝桥杯每日一练:完美的代价相关推荐

  1. 蓝桥杯每日一练专栏导读

    蓝桥杯备战 适宜人群 收费模式 订阅者福利 题目目录 适宜人群 本付费专栏主要为备战蓝桥杯的人士准备,练习题目由简入深,从最一开始的基础题目起手,逐渐进入到算法训练,再是算法提高,最后还有历届试题.助 ...

  2. 【蓝桥杯每日一练】—字符逆序

    文章目录 一.题目 二.例子 三.解析 四.C语言代码 五.python代码 视频讲解 一.题目 将一个字符串str的内容颠倒过来,并输出.str的长度不超过100个字符. 输入: 输入包括一行. 第 ...

  3. [蓝桥杯][基础练习VIP]完美的代价(贪心)

    题目描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...

  4. [蓝桥杯][基础练习VIP]完美的代价-贪心

    题目描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...

  5. 【蓝桥杯每日一练】 汉诺塔

    目录 1.说明 2.解法 3.python实现 python全局变量使用方式: python全局变量和局部变量的区别: 1.说明 河内之塔(Towers of Hanoi)是法国人M.Claus(Lu ...

  6. [Java] 蓝桥杯BASIC-19 基础练习 完美的代价

    问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...

  7. 蓝桥杯 BASIC-19 基础练习 完美的代价 Java版

    问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...

  8. 蓝桥杯 BASIC-19 基础练习 完美的代价

    问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...

  9. 一看就会——蓝桥杯 试题 基础练习 完美的代价——贪心法,21行代码AC

    贪心算法的定义: 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略 ...

最新文章

  1. 数据结构与算法(5)字符串(BF算法、KMP算法及KMP算法优化)
  2. 博客转移至:www.bugsafe.cn
  3. Python语言学习:python语言代码调试—异常处理之详细攻略
  4. Flexible 弹性盒子模型之CSS align-self 属性
  5. ARM裸机篇--按键中断
  6. Xbox 2021年科隆展发表会将于8月25日凌晨1点开始
  7. java getClass()
  8. html li去掉黑点_10分钟教你Python爬虫(上) HTML和爬虫基础
  9. 叔丁基氢醌(TBHQ)行业调研报告 - 市场现状分析与发展前景预测
  10. GNU Binutils简介及基本用法
  11. 写论文时introduction and realted works部分如何写别人的工作,论文写作常用词
  12. ibm服务器怎么装win7系统安装系统,教你thinkpad电脑重装win7系统
  13. XMind中文破解版
  14. nodejs 下载最新版本
  15. html cat文本,网页管理好管家CatHtml
  16. 谷歌Google搜索及谷歌Google学术搜索镜像网站汇总
  17. 汽车Bootloader流程
  18. qq2009 好像和金山词霸屏幕取词有冲突
  19. 互联网公司各岗位真实工作内容起底
  20. TF内存卡(SDHC)的传输规范

热门文章

  1. matlab用梯度下降拟合回归直线
  2. Media Type 媒体类型(MIME Type、Content Type)
  3. 面试题-实施工程师4
  4. ajp协议服务器端如何配置,详解Tomcat HTTP协议与AJP协议
  5. 编程挑战赛第六期我带我的小侄子来了【赛题解析】
  6. 为什么吃饭的时候不要讲话
  7. Mac PyCharm 2019.1.2 激活 亲测有效!
  8. 数据库备份/恢复方案
  9. 五分钟学GIS | 倾斜摄影单体化技术
  10. 45天带你玩转Node(第一天)初探Node.js