编程题
### 问题描述 小蓝想要用自己的贴纸来装饰墙壁。在贴贴纸之前,小蓝会设计一个想要的图案。由于贴纸的设计比较耗费材料(耗费的材料和贴纸的长度成正比),为了能够贴成想要的图案,小蓝决定从想要的图案的开头截取一段作为模板。设这个模板的长度为 $l$ ,而小蓝想要的图案长度为 $L$ ,满足 $1 \leq l \leq L$ 。 小蓝将使用这个模板作为贴纸,进行若干次贴贴纸,以最后能呈现出想要的图案(后一次贴纸会覆盖前一次的结果,例如当前墙壁上已经有" $abc$ "三个字符,那么如果在 $c$ 的位置上再贴一次贴纸,就会得到" $ababc$ ")。小蓝贴贴纸总是从前向后进行,假设小蓝进行了 $k$ 次贴贴纸,那么这 $k$ 次贴贴纸按时间顺序,第 $i$ 次贴的位置为 $s[i]$ ,满足 $s[i] < s[i+1]$ 。 现在小蓝希望请你帮他求出最短的贴纸长度,以便节省材料。 ### 输入描述 输入一个字符串表示小蓝想要的图案。 输入保证: $1 \leq |s| \leq 10^5$ ( $|s|$ 表示字符串 $s$ 的长度)。 ### 输出描述 输出一个数字表示最短的贴纸长度。 ### 样例输入 ``` abcababaaaabc ``` ### 样例输出 ``` 3 ``` ### 说明 可以发现最短贴纸长度为 $3$ ,贴贴纸的位置分别是 $[1,4,6,8,9,10,11]$ (起始位置为 $1$ )。
查看答案
赣ICP备20007335号-2