#AT1195. 谁说了一个双关语?

谁说了一个双关语?

题目描述

给定长度为 NN 的字符串 SS

找出 SS 中至少出现两次的、长度最长的连续子字符串。

更具体地说,找到满足下述条件的最大正整数 lenlen,使得存在整数l1l_1l2(1l1,l2Nlen+1)l_2(1 \leq l_1,l2 \leq N-len+1),满足以下条件:

  • l1+lenl2l_1+len \leq l_2
  • S[l1+i]=S[l2+i](i=0,1,...len1)S[l_1+i]=S[l_2+i](i=0,1,...len-1)

如果不存在这样的整数 len,输出 0。

输入

第一个行一个整数NN

第二行一个字符串SS

输出

输出最大长度的至少出现两次的连续子字符串。如果不存在这样的非空字符串,输出 0。

5
ababa

样例解释

满足条件的字符串有:ababba。它们中的最大长度为 2,即为答案。

请注意,aba 作为连续子字符串出现了两次,但是没有满足 l1+lenl2l_1 + len \leq l_2 的整数对 l1l_1l2l_2

2
2
xy
0

样例解释

没有满足条件的非空字符串。

13
strangeorange
5

提示

  • 2 < = N < = 5 × 103 2\ <\ =\ N\ <\ =\ 5\ \times\ 10^3
  • S = N |S|\ =\ N
  • SS都是由小写英文字母组成的