题目描述:
给定字符串 S,找出最长重复子串的长度。如果不存在重复子串就返回 0。
示例 1:
输入:“abcd”
输出:0
解释:没有重复子串。
示例 2:
输入:“abbaba”
输出:2
解释:最长的重复子串为 “ab” 和 “ba”,每个出现 2 次。
示例 3:
输入:“aabcaabdaab”
输出:3
解释:最长的重复子串为 “aab”,出现 3 次。
示例 4:
输入:“aaaaa”
输出:4
解释:最长的重复子串为 “aaaa”,出现 2 次。
提示:
字符串 S 仅包含从 ‘a’ 到 ‘z’ 的小写英文字母。
1 <= S.length <= 1500
方法1:
主要思路:
(1)二分查找;
(2)从最小长度到最大长度的区间范围内,进行二分搜索,找出可能的更大的长度的重复字符串是否存在,若存在,则记录该长度;
(3)逐渐减小范围;
class Solution {
public:
//判断给出的长度的字符串是否存在重复的
bool have_len(string&S,