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; } }