import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
public int getLongestPalindrome(String A) {
// write code here
if (A == null || A.length() < 1) {
return 0;
}
char[] arr = A.toCharArray();
int n = arr.length;
boolean[][] dp = new boolean[n][n];
int max = 1;
for (int r = 1; r < n; r++) {
for (int l = 0; l < r; l++) {
if (arr[l] == arr[r] && (r - l <= 2 || dp[l + 1][r - 1])) {
dp[l][r] = true;
max = Math.max(r - l + 1, max);
}
}
}
return max;
}
public int getLongestPalindrome2 (String A) {
// write code here
if (A == null || A.length() < 1) {
return 0;
}
char[] arr = A.toCharArray();
int res = 0;
for (int i = 0; i < arr.length; i++) {
int len1 = helper(arr, i, i);
int len2 = helper(arr, i, i + 1);
res = Math.max(res, Math.max(len1, len2));
}
return res;
}
private int helper(char[] arr, int l, int r) {
while (l >= 0 && r < arr.length) {
if (arr[l] == arr[r]) {
l--;
r++;
} else {
break;
}
}
return r - l - 1;
}
}