#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...