给你一个字符串 s,找到 s 中最长的回文子串。
public String longestPalindrome(String s){
if(s == null || s.length() < 2)
return s;
char[] str = s.toCharArray();
boolean[][] dp = new boolean[s.length()][s.length()]; //当前i到j是不是回文字符串
int begin = 0;
int max = 1;
//从i到j字符串是否是回文字符串
for(int j = 0; j < s.length(); j ++){
for(int i = 0; i < j; i++){
if(str[i] == str[j]){
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;
begin = i;
}
}
}
return s.substring(begin, begin + max);
}