KMP演算法java實現之策略模式

2021-06-25 08:32:27 字數 556 閱讀 8252

kmp演算法是個經典的演算法,網上很多大神都給出了很詳細的說明,在此不再贅述。

下面是kmp演算法的實現,使用的是策略模式。

public inte***ce inextbuilder
編寫inextbuilder介面的遞迴思想實現

package com.soft.kmp;

public class recurnextbuilder implements inextbuilder

}

最後編寫kmp類以及測

package com.soft.kmp;

public class kmp

public kmp()

public int kmpmatch(string s,string p){

char pa=p.tochararray();

char sa=s.tochararray();

int next=this.nextbuilder.build(pa);

for(int i=0,j=0;i

Java實現KMP演算法

對於查詢字元子串在父字串中出現的位置,我們可以使用kmp演算法。kmp演算法的實現原理是使子串向右滑盡可能的遠,這就涉及到求滑動距離的陣列next.next陣列中每個元素求解的公式是 private static void kmpnext int next,string str 這裡需要附加說明的是...

kmp演算法 java實現

通常我們想在乙個字串中匹配乙個子字串,會遍歷字串,對於每乙個字元,都遍歷子字串進行匹配,這樣時間複雜度為o nm 使用kmp演算法只需先進行乙個o m 的預處理 生成next陣列 就能將搜尋的時間複雜度降低至o n m 下面講一講kmp演算法的實現原理。對於abcdeabd.和abcdeabc,當匹...

KMP演算法(java實現)

kmp演算法是由donald kunth vaughan pratt james h.morris三個人發明的,是一種複雜度很小的匹配字串的演算法。給定兩個字串str和match,長度分別為n和m。實現乙個演算法,如果字串str中含有子串match,則返回match在str中的開始位置,不含有則返回...