题目描述
一个字符串$S$是另一字符串$T$的循环子串当且仅当存在$k$, $T$所有字符循环右移$k$位后得到的新串$T'$,满足$S$是$T'$的子串。
例如: abc
是 cefab
的循环子串。 (cefab
循环右移$2$位得到abcef
, abc
是abcef
的子串)
一个串$P$是完全循环串当且仅当对于它的任一子串$H$, 都有$H_{reverse}$是$P$的循环子串 ($H_{reverse}$ 为 $H$的倒转, 如abc
reverse后 为cba
)。
给一个长度为$n$的字符串, 判断它是不是完全循环串。
输入格式
第一行一个正整数$t$, 表示测试数据组数。
对于每一组数据,第一行一个正整数$n$, 表示字符串的长度。接下来一行一个长度为$n$的字符串. 仅包含小写字母。
输出格式
对于每组测试数据,如果这个串是完全循环串, 输出YES
,否则输出NO
。每组测试数据之间输出换行。
数据范围
对于所有数据 有 $1 \leq t \leq 100$, $1 \leq n \leq 10^3$, $\sum{n} \leq 10^3$。
样例输入
2
4
ccca
11
eeaafbddfaa
样例输出
YES
NO
提示 选中可以查看
1. 本道题目只需要语法知识就可以解决。
2. 任意子串是什么意思呢?
3. 如果一个子串包含另一个子串,那么我们是不是只需要求出大子串的合法情况,就可以推出小子串的合法情况。
4. 从大的子串向小的子串考虑 最大的子串是什么呢?