5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
分析:#以每一个字符串为中心找最大回文字符串, #这里会分为两种情况,一种回文字符串中的字符个数是奇数,如aba,此时需要以s[i]为基准,开始同时向前后移动,比较s[i-1]和s[i+1] #另一种情况是回文字符串中的字符个数是偶数,即s[i]和是s[i+1]相同,这时候就要比较s[i-1]和s[i+2]
class Solution:
def longestPalindrome(self, s: str) -> str:
n = len(s)
if n<=1:
return s
result = ""
max_length = 0
for i in range(n-1):
#以每一个字符串为中心找最大回文字符串,
#这里会分为两种情况,一种回文字符串中的字符个数是奇数,如aba,此时需要以s[i]为基准,开始同时向前后移动,比较s[i-1]和s[i+1]
#另一种情况是回文字符串中的字符个数是偶数,即s[i]和是s[i+1]相同,这时候就要比较s[i-1]和s[i+2]
left,right = i,i
while left>=0 and right<n and s[left]==s[right]:
if right-left+1>max_length:
max_length = right-left+1
result = s[left:right+1]
left-=1
right+=1
if s[i]==s[i+1]:
left,right = i,i+1
while left>=0 and right<n and s[left]==s[right]:
if right-left+1>max_length:
max_length = right-left+1
result = s[left:right+1]
left-=1
right+=1
return result
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 逻漫星空
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果