首先说明:
子串是在原始字符串中连续的,子序列在原始字符串中可连续可不连续
leetcode 5. 最长回文子串
题目描述:给你一个字符串 s,找到 s 中最长的回文子串。

此题有两种经典的解法,一种是动态规划,一种是中心扩展法,个人更喜欢中心扩展法,两种方法都放一下代码。
中心扩展法
以当前字符为中心,向左右两边扩展,寻找以当前字符为中心的回文串,以下是返回最长回文串的长度
import java.util.*;
/**
以下做法是返回长度
**/
public class Solution {
public int getLongestPalindrome(String A, int n) {
// write code here
//使用中心扩展法做一次
int result = 0;
for(int i=0;i<n;i++){
//以当前这个字符为中心,向两边扩展 需要进行两种情况的考量 一种是当前回文子串的长度是奇数 另外一种是当前回文子串的长度是偶数
int len1 = center(A,i,i); //考虑当前回文子串的长度是奇数的时候
int len2 = center(A,i,i+1); //考虑当前回文子串的长度是偶数的时候
int len = Math.max(len1,len2);

本文探讨了LeetCode上的5. 最长回文子串问题,介绍了中心扩展法和动态规划两种解决方案,并提供了相关代码。此外,还提到了516. 最长回文子序列问题,指出动态规划解法的挑战性。
最低0.47元/天 解锁文章
803





