import java.util.*;
public class Solution {
/**
* 获取字符串中最长回文子串的长度
*
* @param A 输入的字符串
* @return 返回最长回文子串的长度
*/
public int getLongestPalindrome(String A) {
// 如果输入字符串为空或长度为0,则直接返回0
if (A == null || A.length() == 0) {
return 0;
}
int n = A.length(); // 获取字符串长度
char[] str = A.toCharArray(); // 将字符串转换为字符数组
int max = 1; // 初始化最长回文长度为1,因为单个字符本身就是回文
// 创建二维布尔数组,用于记录子串是否为回文
boolean[][] dp = new boolean[n][n];
// 所有长度为1的子串都是回文
for (int i = 0; i < n; i++) {
dp[i][i] = true;
}
// 遍历字符串,检查所有可能的子串
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
// 如果当前字符不相等,则该子串不是回文
if (str[i] != str[j]) {
dp[j][i] = false;
} else {
// 如果字符相等,则判断子串长度
if (i - j == 1) {
// 相邻字符相同,则构成回文
dp[j][i] = true;
} else {
// 否则判断去掉首尾字符后的子串是否为回文
dp[j][i] = dp[j + 1][i - 1];
}
// 如果当前子串是回文,则更新最长回文长度
if (dp[j][i]) {
max = Math.max(max, i - j + 1);
}
}
}
}
return max; // 返回最长回文子串的长度
}
}