求乙個字串中連續出現次數最多的子串

2021-09-20 09:29:52 字數 880 閱讀 1860

例如字串「abababc」,最多連續出現的為ab,連續出現三次。求乙個字串中連續出現的次數最多的子串,首先生成字尾陣列例如上面的字串為:

abababc

bababc

ababc

babc

abcbc

c可以看出第乙個字尾陣列和第三個字尾陣列的起始都為ab,第5個字尾陣列也為ab。可以看出規律來,乙個子串s,如果第一次出現在字尾陣列i的前面,那麼如果它重複出現,下一次出現應該在第i+len(s)個字尾陣列的前面,即 res[i][:j-i] == res[j][:j-i],j-i為子串的長度,下一次出現的為k=j+j-i,res[i][:j-i] == res[k][:j-i]。

def find(string):

res =

for i in range(len(string)):

count = 0

max_count = 0

for i in range(0,len(string)):

for j in range(i+1,len(string)):

count = 1

if res[i][:j-i] == res[j][:j-i]:

count += 1

k = j + j - i

while k < len(string):

if res[i][:j-i] == res[k][:j-i]:

count += 1

k += j - i

else:

break

if count > max_count:

max_count = count

print(res[i][:j-i])

return max_count

字串問題 求乙個字串中連續出現次數最多的子串

2013 09 14 10 47 39 在面試寶典上看到的題目,自己做了一下,用了c 中的string類,比較方便。思路 遍歷源字串的每乙個字元,以該字元為首的重複子串的長度為1到以該字元為首的字尾字串 即以該字串為首,到字元結尾的子串,比如abdcef的第三個字尾字串即為dcef 的長度的一半 對...

字串問題 求乙個字串中連續出現次數最多的子串

2013 09 14 10 47 39 在面試寶典上看到的題目,自己做了一下,用了c 中的string類,比較方便。思路 遍歷源字串的每乙個字元,以該字元為首的重複子串的長度為1到以該字元為首的字尾字串 即以該字串為首,到字元結尾的子串,比如abdcef的第三個字尾字串即為dcef 的長度的一半 對...

求乙個字串中連續出現次數最多的子串

求乙個字串中連續出現次數最多的子串,子串的長度可以是 1 乍一看,好像無處下手。簡單的窮舉效率太低,隨著輸入的文字增長,時間複雜度和空間複雜度就會火箭般竄公升至無法接受的地步。我們需要尋找規律。假設存在乙個長度為 n 的子串 s 出現的次數最多。那麼它具有哪些特點呢?s 中不會出現重複的字元 組成 ...