串的改進模式匹配演算法

2021-09-24 17:34:01 字數 873 閱讀 2793

#include

#define maxsize 1000

#define n 1000

#define ok 1

#define error 0

typedef int status;

typedef unsigned char sstring[maxsize + 1];//s[0]存串長度

int index_kmp(sstring s,sstring t);

void get_next(sstring t);

int longest(sstring t, int m);

status strassign(sstring s, char *chars);

void strprint(sstring s);

int next[n];

int main(void)

else //元素不想等,利用next陣列回溯

j = next[j];

if(j > t[0]) //子串從頭遍歷完畢,在主主串中找到完整子串,返回在s中位置

return i - t[0];

}return 0;//s主串迴圈完畢,子串沒有匹配完畢,沒有找到完整子串出現位置void get_next(sstring t)

}int longest(sstring t, int m)//返回一串字串的最大相等前字尾個數

if( i > n && j > m)//前字尾每個元素都相等,最大相等前字尾個數找到

return n;

}return 0;//無相等前字尾,返回個數為0

}status strassign(sstring s, char chars)

void strprint(sstring s)

樸素的模式匹配和改進的模式匹配(KMP)演算法說明

樸素的模式匹配和改進的模式匹配 kmp 演算法說明 lewislau 前言 最近複習資料結構,以前老師講的時候居然忽略了串。汗,我們學校的確牛b。某仁兄告訴我,kmp基本是資料結構裡面難度比較大的演算法了,所以掌握了它,至少從心理上給我了很大的鼓舞,但是這個演算法是我詢問老師才掌握的,呵呵。言規正傳...

串的模式匹配演算法

子串的定位操作通常稱做串的模式匹配,這也是串的乙個很要的操作。一,一般定位子串位置演算法 演算法基本思想 從主串的第1個字元起和模式的第乙個字元進行比較,若相等,則再比較主串和模式串的後續字元。否則將主串的後續字元和模式串的第乙個字元進行比較,在網上找的一張 return i t.length 找到...

串的模式匹配演算法

串的模式匹配演算法 子串的定位操作通常稱作串的模式匹配。通常用函式index s,t,pos 來求解,其中s為主串,t為模式串,pos為主串中的位置,整個函式的作用是返回在字串s中的第pos個字元及以後 包含pos 首次出現與字串t相匹配的子串的第乙個字元的位置。例如 s abciu 5 abcjk...