python 如何检查有没有长度超过3的子串重复
时间: 2024-02-15 19:02:10 浏览: 17
可以先用一个字典记录所有长度大于等于3的子串出现的位置,再遍历一次字符串,对于每个长度大于等于3的子串,检查字典中是否有相同的子串出现在当前位置之前,如果有则说明存在重复子串。
以下是 Python 代码示例:
```python
def check_duplicate_substring(s):
n = len(s)
sub_dict = {}
for i in range(n - 2):
sub = s[i:i+3]
if sub in sub_dict:
sub_dict[sub].append(i)
else:
sub_dict[sub] = [i]
for i in range(3, n):
for j in range(n - i + 1):
sub = s[j:j+i]
if sub in sub_dict:
for k in sub_dict[sub]:
if k < j + i - 3:
return True
return False
```
该函数接受一个字符串 `s`,返回一个布尔值,表示是否存在长度大于等于3的重复子串。函数先遍历一遍字符串,记录所有长度大于等于3的子串出现的位置,然后再遍历一遍字符串,对于每个长度大于等于3的子串,检查字典中是否有相同的子串出现在当前位置之前。如果存在,说明存在重复子串,返回 True;否则继续检查下一个子串,直到遍历完整个字符串。如果遍历完整个字符串都没有找到重复子串,则返回 False。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)