中心扩展法
def longestPalindrome(self, s: str) -> str:
maxl = 1
maxStart = 0
maxEnd = 0
L = len(s)
for i in range(0, L-1):
k = 1
if s[i]==s[i+1]:
while i>=k and (i+k+1)<L and s[i-k]==s[i+1+k]:
k += 1
if maxl < (2*k):
maxl = 2*k
maxStart = i-k+1
maxEnd = i+k
k = 1
while i>=k and (i+k)<L and s[i-k]==s[i+k]:
k += 1
if maxl < (2*k-1):
maxl = 2*k-1
maxStart = i-k+1
maxEnd = i+k-1
if (i + maxl//2) > (L-1):
break
return s[maxStart:(maxEnd+1)]
需要注意的是,在没有用else将第二个while循环与第一个while循环对立开是因为如果这样对于ccc这样的情况程序就不会进入第二个while的判断。