题目内容
小塔有一串字符s,如果一个串中至少有k个子串与s相同,那么这个串就是s的好串。
例如,如果s是"aa",k=3,那么”aaabcaabc“是好串。
思路
将k个字符串直接拼起来必然是一个好串,但是要最短可以观察两个字符串直接拼起来可不可以去除掉一些共同的字符串,这些共同的字符串就是前后缀相等,即一个字符串的前缀与它相同长度的后缀相等,在这个前提下,两个字符串拼起来相等的部分可以去除,可以直接使用暴力求最长的相等前后缀
代码
C++
#include <iostream>
#include <cstring>