回文子串,中心扩展法最易记忆也容易code。
每次做到这类题目第一时间想的就是中心扩展,然后复习一遍动态规划和马拉车。

import java.util.*;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        //        Set<String> set = new HashSet<>();
        int cnt = 0;
        for(int i = 0; i < s.length(); i++){
            //以 i为中心
            {
                int p = 1;
                String temp = String.valueOf(s.charAt(i));
                //                set.add(temp);
                cnt++;
                while (i - p >= 0 && i + p < s.length() && s.charAt(i - p) == s.charAt(i + p)) {
                    temp = s.charAt(i - p) + temp + s.charAt(i + p);
                    //                    set.add(temp);
                    cnt++;
                    p++;
                }
            }
            //以 i和i+1为对称
            {
                int q = 0;
                String temp = "";
                while (i - q >= 0 && i + q + 1 < s.length() && s.charAt(i - q) == s.charAt(i + q + 1)) {
                    temp = s.charAt(i - q) + temp + s.charAt(i + q + 1);
                    //                    set.add(temp);
                    cnt++;
                    q++;
                }
            }
        }
        //        System.out.println(set.size());
        System.out.println(cnt);
    }
}