#AT1431. E - Who Says a Pun?

E - Who Says a Pun?

E - 谁说了一个双关语?

分数:500

问题描述

给定长度为 $N$ 的字符串 $S$。

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

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

  • $l_1 + len \leq l_2$

  • $S[l_1+i] = S[l_2+i]$ ($i = 0, 1, ..., len - 1$)

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

约束

  • $2 \leq N \leq 5 \times 10^3$
  • $|S| = N$
  • $S$ 由小写英文字母组成。

输入

输入以以下格式从标准输入获得:

NN

SS

输出

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


5
ababa
2

满足条件的字符串有:ababba。它们中的最大长度为 $2$,即为答案。 请注意,aba 作为连续子字符串出现了两次,但是没有满足 $l_1 + len \leq l_2$ 的整数对 $l_1$ 和 $l_2$。


2
xy
0

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


13
strangeorange
5