本题用双指针判断左右相等
import java.util.Scanner;
import static java.lang.Math.abs;
import static java.lang.Math.min;
public class Main {
/**回文串:一个字符串从左往右与从右往左读完全相同*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 读取输入的字符串
String s = sc.nextLine();
// 初始化双指针
int l = 0; // l:left左指针,从字符串开始位置
int r = s.length() - 1; // r:right右指针,从字符串结束位置
int c = 0; // c:count计数器,用于统计操作次数
// 双指针向中间移动
while (l < r) {
// 检查左右指针对应的字符是否相等
if (s.charAt(l) != s.charAt(r)) {
// 计算两个字符的ASCII值差的绝对值,这是字符在字母表中的直接距离,因为字母是环形排列的,所以两个字符之间有左右两种路径,都计算取最小
int t = min(abs(s.charAt( l) - s.charAt( r)),
26 - abs(s.charAt( l) - s.charAt( r)));
// 累加到计数器中
c += t;
}
// 移动指针向中间靠拢
l++;
r--;
}
System.out.println(c);
sc.close();
}
}

京公网安备 11010502036488号