【发布时间】:2014-09-19 02:28:10
【问题描述】:
这是我编写的一个函数,它需要一个很长的文本文件。例如包含整本教科书的文本文件。它将找到任何重复的子字符串并输出最大的字符串。但是现在它不起作用,它只是输出我输入的字符串
例如,如果有一个拼写错误,其中重复了整个句子。它会输出那个句子;鉴于它是整个文件中最大的。如果整个段落被输入两次的错字,它将输出该段落。
此算法获取第一个字符,找到任何匹配项,如果找到并且长度最大,则存储子字符串。然后它需要前 2 个字符并重复。然后是前 3 个字符。等等。然后它将重新开始,除了从第二个字符而不是第一个字符开始。然后从第 3 个字符开始一直到回来。
def largest_substring(string):
length = 0
x,y=0,0
for y in range(len(string)): #start at string[0, ]
for x in range(len(string)): #start at string[ ,0]
substring = string[y:x] #substring is [0,0] first, then [0,1], then [0.2]... then [1,1] then [1,2] then [1,3]... then [2,2] then [2,3]... etc.
if substring in string: #if substring found and length is longest so far, save the substring and proceed.
if len(substring) > length:
match = substring
length = len(substring)
【问题讨论】:
-
我尽量说清楚。有什么困惑?
-
(你不会偶然发现重复的子字符串构建,比如说,一个后缀数组?)句子或段落不太可能被输入两次而不是被复制(并且不会从原始位置中删除)尝试移动)。
标签: python algorithm parsing substring