#CF1948D. 串联重复

串联重复

串联重复

时间限制:2s
空间限制:256MB

题目描述

给定一个仅由小写拉丁字母和问号 ? 组成的字符串 ss。你可以把每个问号替换为任意一个小写拉丁字母。

若一个字符串的长度为偶数,且它的前一半与后一半完全相同,则称它为串联重复。例如,abab 是串联重复,abba 不是。

子串是原字符串中一段连续的字符。请适当地替换问号,使替换后的字符串中,最长串联重复子串的长度尽可能大,并求这个最大长度。

输入格式

第一行包含一个整数 tt,表示测试用例的数量。

接下来 tt 行,每行包含一个字符串 ss,表示一个测试用例。

输出格式

对于每个测试用例,输出一行一个整数,表示替换问号后可以得到的串联重复子串的最大长度。

如果无法得到任何非空的串联重复子串,输出 00。

样例输入 1

4
zaabaabz
?????
code?????s
codeforces

样例输出 1

6
4
10
0

数据范围

  • 对于所有数据,满足 1≤t≤10001\le t\le1000。
  • 对于所有数据,满足 1≤∣s∣≤50001\le \lvert s\rvert\le5000。
  • 所有测试组共同满足 ∑∣s∣≤5000\sum \lvert s\rvert\le5000。
子任务编号 分值 特殊限制
1 15 ∣s∣≤8\lvert s\rvert\le8,且一个输入文件内的 ∑∣s∣≤40\sum \lvert s\rvert\le40
2 25 ∣s∣≤300\lvert s\rvert\le300,且一个输入文件内的 ∑∣s∣≤600\sum \lvert s\rvert\le600
3 30 字符串中不含问号
4 无特殊限制