From 76b2645692be82a11d71a9d2e981ae9c7b664356 Mon Sep 17 00:00:00 2001 From: Wen <409053122@qq.com> Date: Fri, 20 Jun 2025 21:54:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9C=80=E9=95=BF=E5=9B=9E=E6=96=87?= =?UTF-8?q?=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/leecode/No5.java | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/leecode/No5.java diff --git a/src/leecode/No5.java b/src/leecode/No5.java new file mode 100644 index 0000000..0e81505 --- /dev/null +++ b/src/leecode/No5.java @@ -0,0 +1,32 @@ +package leecode; + +import java.util.Arrays; + +/** + * @author Wen + * @date 2025/6/20 21:54 + */ +public class No5 { + public String longestPalindrome(String s) { + int size = s.length(); + boolean[][] dp = new boolean[size][size]; + for (int i = 0; i < size; i ++) { + Arrays.fill(dp[i], false); + } + int maxLen = 0; + String res = ""; + // 如果dp[i+1][j-1]为回文串,那么字符串i位==字符串j位时,dp[i][j]也为回文串 + for (int i = size - 1; i >= 0; i--) { + for (int j = i; j < size; j ++) { + if (s.charAt(i) == s.charAt(j) && (j - i <= 1 || dp[i+1][j-1])) { + dp[i][j] = true; + maxLen = Math.max(maxLen, j - i); + if(j - i >= maxLen) { + res = s.substring(i, j + 1); + } + } + } + } + return res; + } +}