BF演算法與KMP演算法

2021-08-19 22:16:23 字數 1362 閱讀 8664

bf演算法思想:

**實現:

public class bf 

int i=0;

int j=0;//i與j都從0號位置開始

while(ilength()&&j

else

}if(j>=sub.length())//當j>=sub的長度時,說明sub陣列已經遍歷完了

else

}public static void main(string args)

}

執行結果

false

sub在str中的位置為8

kmp演算法

圖示的字串是一種情況,因為字串不同,所以,每乙個位置都有可能發生不匹配的情況,所以,每乙個位置都應該有乙個k值,所有的k值,我們把他放進乙個叫做next的陣列

那麼這個k到底是什麼呢

綜上所述,就是在字串的i號位置(圖中藍色位置)之前,找到如圖所示的倆個最長的相同的子串(圖中綠色位置),這個子串的長度,就是i號位置的k值。

如何得到next陣列

由於我們一開始就已經定義了next[0]=-1,next[1]=0.按照上面的方法,我們就可以得到next陣列

public class kmp 

int next = new int[sub.length()];

next = getnext(sub);

int j=0;

int i=0;

while(ilength()&&j

else

}if(j>=sub.length())//當j>=sub的長度時,說明sub已經遍歷完了

else

}public static int getnext(string sub)

else

}return

next;

}public static void main(string args)

}

結果是8.

BF演算法與KMP演算法

using system namespace kmp else count if j lenb 1 return i lenb else return 0 stathread static void main string args lenb p1.length,p2.length reval km...

BF演算法與KMP演算法

bf演算法 即暴風 brute force 演算法,是普通的模式匹配演算法,它的思想就是將子串的第乙個字元與母串的第乙個字元進行匹配,若相等,則繼續比較子串的第二個字元和母串的第二個字元 若不相等,則比較母串的第二個字元和子串的第乙個字元,依次比較下去,知道得出最後的匹配結果。算是一種蠻力演算法。i...

BF演算法與KMP演算法

這兩種演算法都是字串匹配演算法,通俗來說,就是得到子串在主串中的位置。bf演算法是普通 簡單 的查詢演算法,就是我們常說的暴力破解法。基本思想 圖示 分析 從bf演算法的思想可以得到他的時間複雜度為o m n 這是由於i指標一直要回退,但是有些情況不需要回退,就如上述圖示情況,回退之後和子串t還是不...