在Python中查找字符串中最长重复子字符串的长度
假设我们有一个小写字符串s,我们必须找到s中至少出现两次的最长子字符串的长度。如果找不到这样的字符串,则返回0。
因此,如果输入为s =“abdgoalputabdtypeabd”,则输出将为3,因为出现多次的最长子字符串是“abd”。
要解决此问题,我们将遵循以下步骤−
- 定义函数lcs()。这将获取s1,s2
- n := s1和s2大小的最小值
- 对于范围从0到n – 1的i,做
- 如果s1[i]与s2[i]不同,则
- 返回s1的子字符串[从索引0到i-1]
- 如果s1[i]与s2[i]不同,则
- 返回s1的子字符串[从索引0到n – 1]
- 从主要方法中,执行以下操作−
- 后缀:= a新的列表
- n:= s的大小
- max_len:= 0
- 对于范围从0到n – 1的i,做
- 在后缀的末尾插入s [从索引i到n- 1]的子字符串
- 对列表后缀进行排序
- 对于后缀中的每个项目a和后缀[from index 1 to end的子字符串,做
- rtr:= lcs(a,b)
- 如果rtr的大小> max_len,则
- max_len:= rtr的大小
- 返回max_len
示例
让我们看看以下实现以获得更好的理解−