樸素的模式匹配演算法

2021-08-08 19:38:51 字數 640 閱讀 5075

有時,我們需要在乙個長串t中尋找固定長度的子串s,找出子串在原串中的位置,對於這種操作,我們稱之為串的模式匹配

思想:從原串t第乙個位置開始,與s中第乙個位置資料進行匹配,相同則兩個位置均後移,否則,子串退回到第乙個位置,原串t退回到第二個位置,....當子串匹配完成,則返回在原串中匹配到的首個位置即可。**如下:

int index(char *t,char *s,int pos)    //從原串pos下標開始匹配子串

int i=pos;                  //i表示原串開始位置

int j=0;                       //j表示子串開始位置

while(iif(s[j]==t[i])          //如果當前位置所對應的值相等,則兩個位置均後移

i++;

j++;

else

i=i-j+1;          //否則,i回退到上次開始位置的後乙個位置進行對比,j回退到首個字元位置

j=0;

if(j>=strlen(s))     //迴圈結束時,當j走到子串最後最後乙個值位置之後,則說明已經匹配成功,返回匹配時i開始的位置,否則,匹配失敗,返回-1

return  i-strlen(s);

return  -1;

模式匹配演算法 樸素演算法

1.樸素的模式匹配演算法。樸素模式匹配演算法,簡單的說就是迴圈把主串的每個字元作為開頭,與子串去進行匹配。對主串做大迴圈,每個字元為開頭做子串 要匹配的字串 的小迴圈,如果對應字元匹配,則兩字串都向後移位,否則子串又從子串的開頭開始與主串前一步比較的字元開頭的下一位繼續匹配,直到匹配成功或 主串 遍...

串之樸素的模式匹配演算法

一 串的模式匹配的定義 這個問題其實就是乙個字串在乙個大的字串中的定位問題。這種子串的定位問題的操作通常叫做串的模式匹配 二 舉例說明 假如主串是s qbfhilmeach 模式串 p hilk 現在我們需要在主串中找到模式串。它的匹配過程如下 直到匹配成功 簡單得來說,就是對主串的每乙個字元作為子...

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

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