要点:
动态规划
代码:
public class LongestPalindrome {
public static void main(String[] args) {
String input = "ccababdeee";
String s = longestPalindrome(input);
System.out.println(s);
}
static String longestPalindrome(String input) {
int l = input.length();
if (l <= 1) return input;
boolean[][] dp = new boolean[l][l];
for (int i = 0; i < l; i++) {
dp[i][i] = true;
}
char[] chs = input.toCharArray();
int max = 1;
int start = 0;
for (int j = 1; j < l; j++) {
for (int i = 0; i < l - 1 && i < j; i++) {
if (chs[i] != chs[j]) {
dp[i][j] = false;
} else {
if (j - i < 3) {
dp[i][j] = true;
} else {
dp[i][j] = dp[i + 1][j - 1];
}
}
if (dp[i][j] && j - i + 1 > max) {
max = j - i + 1;
start = i;
}
}
}
return input.substring(start, start + max);
}
}