import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
String string=scanner.next();
int count=0;
char c[]=string.toCharArray();
for (int i = 0; i < c.length/2; i++) {
char c1=c[i];
char c2=c[c.length-1-i];
int a=Math.abs(c2-c1);
int b=26-a;
int min=Math.min(a, b);
count+=min;
}
System.out.println(count);
}
}
这一题,说是要变成回文字符串,但是其实根本就不用去额外判断是否为回文字符串。
我们获取到要变成一致的两个字符,然后判断,用哪种方式去变化能够让变化次数最少。
常见的两种方法就是正常往右移但不进行循环,也就是拿在字母表后面的字符减去在前面的字符。
还有一种方式就是要进行循环,因为字母表一共26个字母,直接用26-前面求出的差值, 就可以得到结果
最后比较这两种方式的大小,把最小的那个统计进去



京公网安备 11010502036488号