例题:leetcode.05.最长字符串
给你一个字符串 s
,找到 s
中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
原理图解:
题解:
class Solution:
def expandAroundCenter(self,s,left,right):#用于移动左右指针
while left>=0 and right < len(s) and s[left]==s[right]:
left-=1
right+=1
return left+1,right-1
def longestPalindrome(self, s: str) -> str:
start,end =0,0
for i in range(len(s)):#中心遍历字符串
left1,right1=self.expandAroundCenter(s,i,i)#确保列表为单双数情况
left2,right2=self.expandAroundCenter(s,i,i+1)
if right1-left1>end-start:
start,end=left1,right1
if right2-left2>end-start:
start,end=left2,right2
return s[start:end+1]