蓝桥杯每日一练:完美的代价
一、题目
问题描述
回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
交换的定义是:交换两个相邻的字符
例如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
蓝桥杯每日一练:完美的代价相关推荐
- 蓝桥杯每日一练专栏导读
蓝桥杯备战 适宜人群 收费模式 订阅者福利 题目目录 适宜人群 本付费专栏主要为备战蓝桥杯的人士准备,练习题目由简入深,从最一开始的基础题目起手,逐渐进入到算法训练,再是算法提高,最后还有历届试题.助 ...
- 【蓝桥杯每日一练】—字符逆序
文章目录 一.题目 二.例子 三.解析 四.C语言代码 五.python代码 视频讲解 一.题目 将一个字符串str的内容颠倒过来,并输出.str的长度不超过100个字符. 输入: 输入包括一行. 第 ...
- [蓝桥杯][基础练习VIP]完美的代价(贪心)
题目描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...
- [蓝桥杯][基础练习VIP]完美的代价-贪心
题目描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...
- 【蓝桥杯每日一练】 汉诺塔
目录 1.说明 2.解法 3.python实现 python全局变量使用方式: python全局变量和局部变量的区别: 1.说明 河内之塔(Towers of Hanoi)是法国人M.Claus(Lu ...
- [Java] 蓝桥杯BASIC-19 基础练习 完美的代价
问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...
- 蓝桥杯 BASIC-19 基础练习 完美的代价 Java版
问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...
- 蓝桥杯 BASIC-19 基础练习 完美的代价
问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是 ...
- 一看就会——蓝桥杯 试题 基础练习 完美的代价——贪心法,21行代码AC
贪心算法的定义: 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略 ...
最新文章
- 数据结构与算法(5)字符串(BF算法、KMP算法及KMP算法优化)
- 博客转移至:www.bugsafe.cn
- Python语言学习:python语言代码调试—异常处理之详细攻略
- Flexible 弹性盒子模型之CSS align-self 属性
- ARM裸机篇--按键中断
- Xbox 2021年科隆展发表会将于8月25日凌晨1点开始
- java getClass()
- html li去掉黑点_10分钟教你Python爬虫(上) HTML和爬虫基础
- 叔丁基氢醌(TBHQ)行业调研报告 - 市场现状分析与发展前景预测
- GNU Binutils简介及基本用法
- 写论文时introduction and realted works部分如何写别人的工作,论文写作常用词
- ibm服务器怎么装win7系统安装系统,教你thinkpad电脑重装win7系统
- XMind中文破解版
- nodejs 下载最新版本
- html cat文本,网页管理好管家CatHtml
- 谷歌Google搜索及谷歌Google学术搜索镜像网站汇总
- 汽车Bootloader流程
- qq2009 好像和金山词霸屏幕取词有冲突
- 互联网公司各岗位真实工作内容起底
- TF内存卡(SDHC)的传输规范