CF1326D2 Prefix-Suffix Palindrome (Hard version)

题目描述

这是本题的困难版。 区别在于对字符串长度总和和多测数量的限制。 给你一个由小写英文字母组成的字符串 $s$。找出满足以下条件的最长字符串 $t$: - $t$ 的长度不超过 $s$ 的长度。 - $t$ 是一个回文字符串。 - 存在两个字符串 $a$ 和 $b$(可能为空,且 $a$ 和 $b$ 不相交),使得 $t=a+b$ (加号表示连接),并且 $a$ 是 $s$ 的前缀,$b$ 是 $s$ 的后缀。

输入格式

输入由多个测试样例组成。第一行包含一个整数 $t$( $1\le t\le 10^5$),即测试样例的数量。接下来的 $t$ 行分别描述一个测试样例。 每组数据的第一行都是一个非空字符串 $s$,且仅由小写英文字母组成。 保证所有测试样例的字符串长度之和不超过 $10^6$。

输出格式

对于每个测试样例,打印满足上述条件的最长字符串。 如果存在多个可能的解决方案,则打印其中任何一个。

说明/提示

在第一个样例中,字符串 `a` 满足所有条件。 在第二个样例中,字符串 `abcdfdcba` 满足所有条件。 - 因为它的长度是 $9$,没有超过字符串 $s$ 的长度 $11$。 - 它是一个回文串。 - `abcdfdcba=abcdfdc+ba`,`abcdfdc` 是 $s$ 的前缀,而 `ba` 是 $s$ 的后缀。 可以证明,不存在满足条件的更长字符串。 在第四次样例中,字符串 `c` 是正确的,因为 `c=c +""(即空串)`,又因为 $a$ 或 $b$ 可以为空。 这个样例的另一个可能解法是 `s`。