主要解题思路
题目开始的时候没明白,主要原理找到满足不出现长度为k个串的重复子串
采用二分的思想,从中间开始,以mid长度开始划分
n = int(input())
l = 0
r = n
s = input()
def check(mid):
global s
tmp = [] #在k个字序列中,涵盖多少子序列,后面可以从这个里面匹配,匹配到即是错误,不可匹配则继续
for i in range(n-mid+1):
p = s[i:i+mid]#在序列中满足
if p in tmp:
return False
tmp.append(p)
return True
while l<r:
mid = (l+r)//2
if check(mid):
r = mid
else:
l = mid+1
print(r)