public class Main{
public static void main(String[] args){
String s = "babad";
System.out.println(longestPalindrome(s));
}
static String longestPalindrome(String s) {
char[] c = s.toCharArray();
int start = 0,end = 0,len = 0;
int[][] dp = new int[c.length][c.length];//记录s.substring(j,i+1)是否为回文
for(int j = 0; j < c.length; j++){
for(int i = j; i >= 0; i--){
if(c[i] == c[j]){
if(j - i < 3){
dp[i][j] = 1;
}
else{
dp[i][j] = dp[i+1][j-1];
}
if(len < j - i + 1 && dp[i][j] == 1){
len = j - i + 1;
start = i;
end = j;
}
}
}
}
return s.substring(start,end+1);
}
}
最长回文子串
最新推荐文章于 2025-12-05 17:02:52 发布
该博客展示了如何使用动态规划在Java中找到给定字符串的最长回文子串。代码通过创建二维数组记录子串是否为回文,并逐步更新最长回文长度和起始位置。
1032

被折叠的 条评论
为什么被折叠?



