這是我寫的一個函數,需要一個非常長的文本文件。如包含整個教科書的文本文件。它會查找任何重複的子字符串並輸出最大的字符串。現在它不起作用,它只輸出我放入的字符串找到最大的重複子字符串
例如,如果有一個整個句子被重複的拼寫錯誤。它會輸出這個句子;因爲它是整個文件中最大的。如果在輸入整個段落兩次時出現錯字,則會輸出該段落。
該算法採用第一個字符,找到任何匹配項,如果匹配,並且長度最大,則存儲子字符串。然後它需要前2個字符並重復。然後是前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)
我試圖使它儘可能明確。什麼讓人困惑? – 2014-09-19 02:38:41
(你會不會偶然發現構建後綴數組的子句,比如後綴數組?)句子或段落輸入的次數少於被複制的次數(並且在嘗試移動時不會從原始位置移除)。 – greybeard 2014-09-19 08:30:54