T3.模板串

依然KMP+DP解决。

可以发现这样一个事情,模板串一定是原串的前缀和后缀,这就想到了kmp解决。

设f[i]为S的前缀i的最短模板串长,g[i]为长度为i的模板串可以覆盖到的位置。

f[i]一定可以等于i,但是可能存在更优解,而这个更优解就在f[fail[i]]中,考虑重叠的情况,必须在[i-fail[i],i)中有一个f[j]==f[fail[i]],才能覆盖到i位置。

也就是g[f[fail[i]]>=i-fail[i],就可以判定f[i]=f[fail[i]]。

时间复杂度O(n)

相关文章:

  • 2022-12-23
  • 2021-04-18
  • 2021-07-06
  • 2021-12-28
  • 2021-12-15
  • 2021-06-15
  • 2021-04-02
  • 2021-08-12
猜你喜欢
  • 2021-10-14
  • 2021-08-05
  • 2021-12-02
  • 2021-06-24
  • 2021-08-23
  • 2021-08-19
相关资源
相似解决方案