2
def maxProduct(self, s: str) -> int:6
hlen = [0] * n # half-length10
hlen[i] = min(right - i, hlen[2 * center - i])13
and i + 1 + hlen[i] < len(s)14
and s[i - 1 - hlen[i]] == s[i + 1 + hlen[i]]17
if right < i + hlen[i]:18
center, right = i, i + hlen[i]23
prefix[i + hlen[i]] = max(prefix[i + hlen[i]], 2 * hlen[i] + 1)24
suffix[i - hlen[i]] = max(suffix[i - hlen[i]], 2 * hlen[i] + 1)27
prefix[~i] = max(prefix[~i], prefix[~i + 1] - 2)28
suffix[i] = max(suffix[i], suffix[i - 1] - 2)31
prefix[i] = max(prefix[i - 1], prefix[i])32
suffix[~i] = max(suffix[~i], suffix[~i + 1])34
return max(prefix[i - 1] * suffix[i] for i in range(1, n))