class Solution:
def longestPalindrome(self, s: str) -> str:
if not s: return 0
t = "?#"
for c in s:
t += c + '#'
t += '!'
n = len(t)
f = [1 for _ in range(n)]
res, im , rm = '', 0, 0
for i in range(2, n - 2):
f[i] = min(rm - i + 1, f[2 * im - i]) if i < rm else 1
# print(f)
while t[i + f[i]] == t[i - f[i]]:
f[i] += 1
if i + f[i] - 1 > rm:
rm = i + f[i] - 1
im = i
if 2 * f[i] - 1 > len(res):
res = t[i - f[i] + 1: i + f[i]]
return res[1::2]
添加#是解决奇偶位统一处理