deflongestPalindrome(s:str):
length =len(s)
string =''max=0if length ==0:return'None'elif length ==1:return s
else:for index inrange(length):# 对字符串的循环,对每一个字进行循环for check inrange(0, index +1):if s[index]== s[check]:
i = index -1
j = check +1while i > j:if s[i]!= s[j]:break
i -=1
j +=1else:if index - check +1>max:max= index - check +1
string = s[check:index +1]returnmax, string
string ='aaaaaaaaaaaaaaaaaaa'print(longestPalindrome(string))
中心扩展算法
deflongestPalindrome(s:str):if s ==Noneorlen(s)<1:return""
start = end =0for i inrange(len(s)):
len1 = expandAroundCenter(s, i, i)
len2 = expandAroundCenter(s, i, i +1)
length =max(len1, len2)if length > end - start:
start = i -(length -1)//2
end = i + length //2return s[start:end +1], end +1- start
defexpandAroundCenter(s, left, right):
L = left
R = right
while L >=0and R <len(s)and s[L]== s[R]:
L -=1
R +=1return R - L -1