KMP字串模式匹配詳解

2021-06-22 03:25:14 字數 885 閱讀 8418

kmp字串模式匹配詳解

kmp字串模式匹配通俗點說就是一種在乙個字串中定位另乙個串的高效演算法。簡單匹配演算法的時間複雜度為

o(m*n);kmp

匹配演算法。可以證明它的時間複雜度為

o(m+n).。

一.簡單匹配演算法

先來看乙個簡單匹配演算法的函式:

int index_bf ( char s [ ], char t [ ], int pos )

// if

else

k = next[k];

}// while

這裡是我加的顯示部分

// for(int i=0;i另一種寫法,也差不多。

void getnext(const char* pattern,int next)

這裡是我加的顯示部分

// for(int i=0;i#include int kmp(const char *text,const char* pattern) //const 表示函式內部不會改變這個引數的值。

int *next=new int[len+1];

get_nextval(pattern,next);//求pattern的next函式值

int index=0,i=0,j=0;

while(text[i]!='/0' && pattern[j]!='/0' )

else

}}//while

delete next;

if(pattern[j]=='/0')

return index;// 匹配成功

else

return -1;

}int main()//abcabcad

**

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演算法是一種改進後的字串匹配演算法,由d.e.knuth與v.r.pratt和j.h.morris同時發現,因此人們稱它為克努特 莫里斯 普拉特操作 簡稱kmp演算法 通過乙個輔助函式實現跳過掃瞄不必要的目標串字元,以達到優化效果。傳統字串匹配演算法的缺憾 bill認為,對於...