本题用双指针判断左右相等
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(); } }