这题。。很迷。。。
过一遍char,指针一左一右,找回文。一般是当left=right=某个数字的时候,进入while里找最长回文,同时updateleft and right. 其他情况abs(left-right)=1, 进入下一位。O(n*2)
def longestPalindrome(s):
ansl, ansr, maxx = 0, 1, 0
length = len(s)
for i in range(1, length * 2):
if i & 1 :
left = i // 2
right = left
else :
left = i // 2 - 1
right = left + 1
print(left,right)
while (left >= 0) and (right < length) and (s[left] == s[right]):
left -= 1
right += 1
left += 1
right -= 1
print(left,right)
print(maxx)
if right - left > maxx:
maxx = right - left
ansl = left
ansr = right
return s[ansl: ansr + 1]