【发布时间】:2021-08-29 20:19:54
【问题描述】:
我正在寻找一种快速算法,它可以在给定字符串中搜索最长的重复子字符串(至少重复 1 次),同时尽可能降低时间复杂度和(如果可能)内存 (RAM)。
我见过一些实现,但大多数都不是为大量字符设计的(比如说4k, 400k, 4m... length)。一个例子是this one:
from collections import deque
def largest_substring_algo1(string):
l = list(string)
d = deque(string[1:])
match = []
longest_match = []
while d:
for i, item in enumerate(d):
if l[i]==item:
match.append(item)
else:
if len(longest_match) < len(match):
longest_match = match
match = []
d.popleft()
return ''.join(longest_match)
我一直在尝试使用包含 103440816326530612244897959183673469387755102040816326530612244897959183673469387755 的字符串 100 次。
它适用于小字符串(
编辑:有没有办法在内存中不加载(比如说 20GB)文件?
【问题讨论】:
-
这能回答你的问题吗? Find longest repetitive sequence in a string
标签: python algorithm substring