5. 最长回文子串 - 力扣(LeetCode) (leetcode-cn.com)
从中间开始扩散
两种情况:
1.回文串长度为奇数
2.回文串长度为偶数
遍历字符串,从每个字符为中心扩散,寻找该点为中心时的最长回文串
取所有情况的最大值
时间复杂度:O(n)
空间复杂度:O(1)
代码如下:
class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
res=""
for i in range(len(s)):
s1=self.expand(s,i,i)
s2=self.expand(s,i,i+1)
res=s1 if len(s1)>len(res) else res
res=s2 if len(s2)>len(res) else res
return res
def expand(self,s,l,r):
while l>=0 and r<len(s) and s[l]==s[r]:
l-=1
r+=1
return s[l+1:r]
需要注意的是:
边界条件