获取最长回文子串的长度
class Solution:
def getLongestPalindrome(self , A: str) -> int:
def isHui(string):
l1 = list(string)
l2 = list(reversed(string))
return l1 == l2
i = 0
maxlen = 1
while i < len(A):
j = len(A) - 1
while i < j:
if A[i] == A[j] and isHui(A[i:j + 1]):
maxlen = max(maxlen, j + 1 - i)
break
j -= 1
i = i + 1
return maxlen
思路:
1.双指针:i从左向右遍历字符串,对于每一个字符,j从右向左遍历i右边的字符。
2.如果第i个和第j个字符相同,则有可能A[i:j+1]是回文子串,进一步进行判断,如果是回文子串,则表示该子串是以第i的字符开始的最长的回文子串,则i+1,j重置为len(A)-1。如果第i个和第j个字符不相同或者相同但A[i:j+1]不是回文子串,则j-1、i不变。
3.过程中保证i向右,j向左,i < j