题目大意:
给一个串A 比如abc,重复无限次,得到 abcabcabcabc………………abcabc…………
选择中间一段 abcabcabcabc………………abcabc…………
对于可以截获中间的abca而言,原来的串最短是多长……
仔细思考不会,然后队友告诉我并不在意原来的串长……所以直接转化为求串的最短循环节。
就和之前的题目一样了
代码挺短的 答案为len - next[len]。结束
while (1)
{
int lenP = 0;
if (!get_s(pattern)) break;
lenP = strlen(pattern);
pattern[lenP] = 0;
kmp_pre(pattern, lenP, nxt);
int cir = lenP - nxt[lenP];
print_int(cir);
wirte_s("\n");
}