package 蓝桥杯VIP;
import java.util.Scanner;
public class 完美的代价 {
public static int sum = 0;
public static void exchange(char[] arr, int x, int y) { //把arr字符数组中x下标和y下标对应的值交换位置
char item;
item = arr[x];
arr[x] = arr[y];
arr[y] = item;
sum ++; //移动次数加一
}
public static void main(String[] args) {
Scanner readerIn = new Scanner(System.in);
int n = readerIn.nextInt();
String str = readerIn.next();
char[] arr = str.toCharArray();
int flag = 0; //当字符串长度为奇数时非成对字符的个数
boolean isHuiwen = true; //标示此字符串是否为回文
int i, j, l = arr.length;
for(i = 0; i < arr.length/2; i ++) {
for(j = l - 1; j >= i; j -- ) { //从最右边开始查找,看有无与当前字符相同的
if(0 == arr.length % 2 && i == arr.length - 1 && j == arr.length) {
//如果当前字符串长度为偶数,且中间两个字符不相同,则该字符不是回文字符
if(arr[i] != arr[j]) {
isHuiwen = false;
break;
}
}
if(i == j) { //没有找到与当前字符相同的字符
if(0 == arr.length % 2) { //如果字符长度为偶数则不是回文字符串
isHuiwen = false;
break;
} else { //如果当前字符长度为奇数,且未匹配的字符超过一个,则也不是回文字符
flag ++;
if(flag <= 1) { //有一个字符未匹配,则把此字符移动到中间
for(int m = 0; m < arr.length/2 - 1; m ++) {
exchange(arr, m, m + 1);
}
i = 0; //重新开始遍历
break;
}
if(flag == 2) { //如果有两个字符为匹配,则该字符不是回文字符
isHuiwen = false;
break;
}
}
}
if(arr[i] == arr[j]) {
for(int k = j; k <= l - 1 - 1; k ++){
exchange(arr, k, k + 1);
//System.out.println(arr);
}
l --;
break;
}
}
}
if(!isHuiwen)
System.out.println("Impossible");
else
System.out.printf("%d\n", sum);
}
}
Java实现 蓝桥杯VIP 基础练习 完美的代价
2023-09-14 08:58:17 时间
相关文章
- java map 二维数组_Java二维数组实现简单Map
- java生成license_使用truelicense实现用于JAVA工程license机制(包括license生成和验证)…
- java url加密_Java实现url加密处理的方法示例
- Java基础问题汇总
- Java基础学习笔记十五 集合、迭代器、泛型详解编程语言
- JAVA基础之转换流和缓冲流详解编程语言
- Java基础-方法详解编程语言
- Linux上部署Java项目实践指南(linux部署java项目)
- Oracle转Java实现跨平台开发的奇妙之旅(oracle转java)
- 实现Java实现Redis锁的研究与应用(redis锁java)
- 在Linux上编译Java 实用教程指南(linux上编译java)
- Linux系统中下载Java的方法(linux下java下载)
- Java编程实现MySQL数据库连接(java连mysql数据库)
- 秘籍学习实现纯Java版Redis(纯java版redis)
- 使用Java语言写Redis实现一个分布式缓存系统(用java写个redis)
- Java迭代Oracle实现数据库更高性能(java迭代oracle)
- 一部分Oracle驱动Java的成功之路(java是oracle的)
- Java使用Oracle实现优雅数据查询(java.oracle)
- Oracle中实现Java程序设计的极限可能性(oracle中的java)
- Java实现Redis队列锁功能(redis队列锁java)
- 实现基于Redis的分布式锁Java实现(redis锁java代码)