下面是模式值使用第二種表示方法的匹配函式(
next[0]=0)
int my_kmp(char *s, char *t, int pos)
{ int i = pos, j = 0;//pos(s 的下標0≤pos六.後話--kmp的歷史
[這段話是抄的]
cook
於1970
年證明的乙個理論得到,任何乙個可以使用被稱為下推自動機的計算機抽象模型來解決的問題,也可以使用乙個實際的計算機(更精確的說,使用乙個隨機訪問機)在與問題規模對應的時間內解決。特別地,這個理論暗示存在著乙個演算法可以在大約
m+n的時間內解決模式匹配問題,這裡m和
n分別是儲存文字和模式串陣列的最大索引。
knuth
和pratt
努力地重建了
cook
的證明,由此建立了這個模式匹配演算法。大概是同一時間,
morris
在考慮設計乙個文字編輯器的實際問題的過程中建立了差不多是同樣的演算法。這裡可以看到並不是所有的演算法都是「靈光一現」中被發現的,而理論化的電腦科學確實在一些時候會應用到實際的應用中。
KMP字串模式匹配詳解
kmp字串模式匹配詳解 kmp字串模式匹配通俗點說就是一種在乙個字串中定位另乙個串的高效演算法。簡單匹配演算法的時間複雜度為o m n kmp匹配演算法。可以證明它的時間複雜度為o m n 一.簡單匹配演算法 先來看乙個簡單匹配演算法的函式 int index bf char s char t in...
KMP字串模式匹配詳解
簡單匹配演算法的時間複雜度為o m n kmp匹配演算法時間複雜度為o m n 一 簡單匹配演算法 先來看乙個簡單匹配演算法的函式 int index bf char s char t int pos if else k next k while get nextval 另一種寫法,也差不多。voi...
KMP字串模式匹配詳解
kmp字串模式匹配詳解 kmp字串模式匹配通俗點說就是一種在乙個字串中定位另乙個串的高效演算法。簡單匹配演算法的時間複雜度為 o m n kmp 匹配演算法。可以證明它的時間複雜度為 o m n 一.簡單匹配演算法 先來看乙個簡單匹配演算法的函式 int index bf char s char t...