对回文串修改问题怎么解决


import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int T=sc.nextInt();
        sc.nextLine();
        for (int k=1;k<=T;k++){
            char[] c=sc.next().toCharArray();
            boolean b=true;
            //判断回文
            for (int i=0;i<c.length/2;i++){
                if (c[i]!=c[c.length-i-1]){
                    b=false;
                    break;
                }
            }
            if (b){ //如果是回文
                Set<Character> s=new HashSet<>();
                for (int i=0;i<=c.length/2;i++)
                    s.add(c[i]);
                System.out.println("Case #"+k+":"+"YES "+s.size());
            }
            else {  //如果不是
                int ans=0;
                for (int i=0;i<c.length/2;i++){
                    if (c[i]!=c[c.length-i-1])
                        ans++;
                }
                System.out.println("Case #"+k+":"+"NO "+ans);
            }
        }
    }
}

题目链接如下
https://nanti.jisuanke.com/t/A1051
样例可以过,但是答案显示是错误,格式上调整过了一次但也没过,应该不是输出格式问题,是不是修改回文次数没有保证最小,应该如何做,不太懂这个思路

将多次结果存数组中,最后再一次性输出。