標準的kmp演算法

2021-10-03 12:14:32 字數 723 閱讀 4365

//字串t中t[0]儲存t的長度 

#include

void

clearstring

(char s)

}int

strlength

(char s)

void

get_next

(char t,

int*next)

else

j=next[j]

;//若字元不相同則j值回溯 }}

void

get_nextval

(char t,

int*nextval)

else

j=nextval[j];}

}//若主串的第pos個字元 之後存在與t相等的子串,則返回第乙個這樣的子串在s中的位置,否則返回0

intindex_kmp

(char s,

char t,

int pos)

else

j=next[j];}

if(j>t[0]

)return i-t[0]

;else

return0;

}int

strinsert

(char s,

char t)

s[0]=t;

return1;

}int

main()

演算法 KMP演算法

kmp演算法主要解決的問題就是在字串 主串 中的模式 pattern 定位問題。記主串為t,模式串為p,則kmp演算法就是返回p在t 現的具體位置,如果沒有出現則返回 1。如果 i 指標指向的字元和 j 指標指向的字元不一致,那麼把 i 右移1位,j 從0位開始,從新開始匹配 如果 i 指標指向的字...

KMP演算法詳解 適合初學KMP演算法的朋友

相信很多人 包括自己 初識kmp演算法的時候始終是丈二和尚摸不著頭腦,要麼完全不知所云,要麼看不懂書上的解釋,要麼自己覺得好像心裡了解kmp演算法的意思,卻說不出個究竟,所謂知其然不知其所以然是也。經過七八個小時地仔細研究,終於感覺自己能說出其所以然了,又覺得資料結構書上寫得過於簡潔,不易於初學者接...

KMP演算法詳解 適合初學KMP演算法的朋友

相信很多人 包括自己 初識kmp演算法的時候始終是丈二和尚摸不著頭腦,要麼完全不知所云,要麼看不懂書上的解釋,要麼自己覺得好像心裡了解kmp演算法的意思,卻說不出個究竟,所謂知其然不知其所以然是也。經過七八個小時地仔細研究,終於感覺自己能說出其所以然了,又覺得資料結構書上寫得過於簡潔,不易於初學者接...