Java KMP演算法 字串匹配

2021-09-24 16:23:31 字數 786 閱讀 7531

kmp演算法是一種改進的字串模式匹配演算法,可以在o(n+m)的時間複雜度以內完成字串的匹配操作。

利用得到的部分匹配,通過乙個next陣列,儲存模式串中前後最長公共子串行的長度,每次回溯時,通過next陣列找到前面匹配過的位置,省去了大量的計算時間。

所以,kmp演算法的核心就是計算next陣列。next陣列的主要實現方法有很多,就是要找到前後最長公共子串行的長度(即部分匹配值------」字首」和」字尾」的最長的共有元素的長度)

kmp演算法較樸素演算法的優點:

1)在主串和子串匹配的過程中,主串不再回退,只改變子串的比較位置。

2)為子串生成對應的next陣列,每次匹配失敗,通過訪問next陣列獲知子串再一次開始匹配的位置。

private static int kmp(string s, string t)  else 

}if(j == t.length()) else

}

private static int getnext(string t)  else 

}else

}return next;

}

private static int find(string s, string t)  else 

}if(j == t.length()) else

}

public static void main(string args)

字串匹配演算法 字串匹配演算法總覽

字串匹配在文字處理裡非常重要,我們採用簡潔的python 把以下演算法一一實現並講解。樸素演算法 algorithm rabin karp 演算法 有限自動機演算法 finite automation knuth morris pratt 演算法 kmp algorithm boyer moore ...

字串匹配演算法

首先引用一下另一篇文章中對字串匹配的介紹 字串匹配指的是從文字中找出給定字串 稱為模式 的乙個或所有出現的位置。本文的演算法一律輸出全部的匹配位 置。模式串在 中用x m 來表示,文字用y n 來,而所有字串都構造自乙個有限集的字母表 其大小為 根 據先給出模式還是先給出文字,字串匹配分為兩類方法 ...

字串匹配演算法

平常操作文字的時候,經常需要操作對字串進行操作。而字串中最重要的一種操作就叫匹配,字串的匹配演算法很多,人們最熟悉的莫過於kmp演算法了。今天就來談一談一些字串匹配演算法。先來說說大名鼎鼎的kmp演算法,這個演算法出現在無數的資料結構與演算法書上面。它的策略很簡單 當模式串第k個字元不匹配主串中第s...