Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
我用的是中心扩展法
因为回文字符串是以中心轴对称的,所以如果我们从下标 i 出发,用2个指针向 i 的两边扩展判断是否相等,那么只需要对0到
n-1的下标都做此操作,就可以求出最长的回文子串。但需要注意的是,回文字符串有奇偶对称之分,即”abcba”与”abba”2种类型,
因此需要在代码编写时都做判断。
设函数int Palindromic ( string &s, int i ,int j) 是求由下标 i 和 j 向两边扩展的回文串的长度,那么对0至n-1的下标,调用2次此函数:
int lenOdd = Palindromic( str, i, i ) 和 int lenEven = Palindromic (str , i , j ),即可求得以i 下标为奇回文和偶回文的子串长度。
接下来以lenOdd和lenEven中的最大值与当前最大值max比较即可。
这个方法有一个好处是时间复杂度为O(n2),且不需要使用额外的空间。
public class</

本文介绍了如何解决LeetCode中的5. Longest Palindromic Substring问题,利用中心扩展法找到最长的回文子串。通过遍历字符串每个字符作为中心,分别计算奇数长度和偶数长度的回文串,最终确定最长回文子串。这种方法的时间复杂度为O(n^2),不需要额外空间。在解题过程中,还提到了动态规划等其他解法,鼓励读者进一步探讨。
订阅专栏 解锁全文
250

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



