13最长回文子串

最长回文子串

给你一个字符串 s,找到 s 中最长的 回文 子串。

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母组成
public String longestPalindrome(String s) {
  char[] charArray = s.toCharArray();
  int len = charArray.length;

  boolean[][] dp = new boolean[len][len];
  int maxL = 0;
  int maxR = 0;
  for (int i = 0; i < len; i++) {
    for (int j = 0; j <=i; j++) {
      if(charArray[i] == charArray[j] && (i-j <2 || dp[j+1][i-1])){
        dp[j][i] = true;
        if (i-j>maxR-maxL) {
          maxR = i;
          maxL = j;
        }
      }
    }
  }
  StringBuilder builder = new StringBuilder();
  for (int i = maxL; i <=maxR ; i++) {
    builder.append(charArray[i]);
  }
  return builder.toString();
}

13最长回文子串
https://jiajun.xyz/2026/02/26/算法/14动态规划/13最长回文子串/
作者
Lambda
发布于
2026年2月26日
许可协议