= 0 && i + d[i] < n && s.charAt(i - d[i]) == s.charAt(i + d[i])) { d[i]++; } if (i + d[i] - 1 > r) { l = i - d[i] + 1; r = i + d[i] - 1; } } return d; } }"> = 0 && i + d[i] < n && s.charAt(i - d[i]) == s.charAt(i + d[i])) { d[i]++; } if (i + d[i] - 1 > r) { l = i - d[i] + 1; r = i + d[i] - 1; } } return d; } }"> = 0 && i + d[i] < n && s.charAt(i - d[i]) == s.charAt(i + d[i])) { d[i]++; } if (i + d[i] - 1 > r) { l = i - d[i] + 1; r = i + d[i] - 1; } } return d; } }">

Screenshot_20240321_140657_tv.danmaku.bilibilihd.jpg

Screenshot_20240321_140646_tv.danmaku.bilibilihd.jpg

Screenshot_20240321_140632_tv.danmaku.bilibilihd.jpg

Untitled

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str = scan.nextLine();
		StringBuilder s = new StringBuilder("$#");
		int n = str.length(), k = 0;
		for (int i = 0; i < n; i++) {
			s.append(str.charAt(i)).append("#");
		}
		n = s.length();
		int[] d = GET(s, n);
		int result = 0;
		for (int i = 0; i < n; i++) {
			result = Math.max(result, d[i] - 1);
		}
		System.out.println(result);
	}

	public static int[] GET(StringBuilder s, int n) {
		int[] d = new int[n];
		int l = 0, r = 0;
		for (int i = 1; i < n; i++) {
			if (i <= r) {
				d[i] = Math.min(r - i + 1, d[l + r - i]);
			}
			while (i - d[i] >= 0 && i + d[i] < n && s.charAt(i - d[i]) == s.charAt(i + d[i])) {
				d[i]++;
			}
			if (i + d[i] - 1 > r) {
				l = i - d[i] + 1;
				r = i + d[i] - 1;
			}
		}
		return d;
	}
}