完美的代价
蓝桥杯基础练习: 问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。 交换的定义是:交换两个相邻的字符 例如mamad 第一次交换 ad : mamda 第二次交换 md : madma 第三次交换 ma : madam (回文!完美!) 输入格式 第一行是一个整数N,表示接下来的字符串的长度(N <= 8000) 第二行是一个字符串,长度为N.只包含小写字母 输出格式 如果可能,输出最少的交换次数。 否则输出Impossible 样例输入 5 mamad 样例输出 3 【分析】:首先要判断该字符串能不能变成回文串,如果不能你去进行操作就是在浪费时间了,所以判断依据就是统计该字符串中的各字符个数为奇数的个数,如果为奇数的字母个数大于1个,说明整个字符串到最后会有两个落单的字母,肯定不能凑成回文串了,所以这种情况直接“Impossible”就可以了。如果能成为回文串的话,就写一个函数进行递归求解。 1 import java.util.Scanner; 2 3 public class Main{ 4 public static void main(String args[]){ 5 Scanner sc =