kmp演算法 求乙個串的重複子串

2021-07-17 02:07:41 字數 428 閱讀 5304

題意:在給定的字串前i位找出迴圈節斷的個數。

思路:還是kmp演算法的應用變形,從給出字串的第2位開始遍歷,找出每次的匹配的字串(length),前i為字串長度為i,所以i/length就是迴圈節斷的個數,要保證i/length能夠整除,所以i%length==0。

移動位數(length)   =     已匹配的字元數(i)  -    對應部分匹配值(next[i])

【參考**】

#include#includeusing namespace std;

const int max=1000001;

char str[max];

int next[max];

void getnext(int n)

{ int i=0,j=-1;

next[i]=-1;

while(i

求最長重複子串

主要思路還是求出所有的字尾陣列,對字尾陣列進行排序,這樣所有最接近的字串一定就在相鄰了,只需要比較每個字尾陣列的前後兩個串,就可以求出所有重複的字串,然後比較就可以得到最大的重複串的長度。include include include include include using namespace ...

求最長重複子串 和 最長不重複子串 思路

題目 求任意乙個字串中的所有最長重複字串和所有最長不重複子串 最長不重複子串的解法 設定乙個輔助資料結構 如map 記錄每個字元最後一次出現的位置 遍歷字串中的每個字元,如果在map中沒有出現,則不重複子串的長度 1,並更新最大字串的長度值 如果在map中已經出現過,則更新當前字元在map中的位置和...

求不重複子串數

試題 演算法提高 著急的wyf 不同子串個數 提交此題 資源限制 時間限制 476ms 記憶體限制 256.0mb 問題描述 由於戰網的密碼是一串亂碼,wyf巧妙地忘記了他的密碼。他就是作死,如同自掘墳墓。說到掘墳墓,問題就來了 挖掘機技術究竟哪家強?他現在非常著急,走投無路,都快飛起來了。他只記得...