演算法 字串模式匹配KMP

2021-06-20 14:42:11 字數 1279 閱讀 2252

定位字串p在字串s中的位置,可以稱作字串的模式匹配

//int search(char const*, int, char const*, int)  

//查詢出模式串patn在主串src中第一次出現的位置

//plen為模式串的長度

//返回patn在src中出現的位置,當src中並沒有patn時,返回-1

int search(char const* src, int slen, char const* patn, int plen)

else

} if( j >= plen )

return i - plen; //如果字串相同的長度大於模式串的長度,則匹配成功

else

return -1;

}

//**2-1  

//int kmp_seach(char const*, int, char const*, int, int const*, int pos) kmp模式匹配函式

//輸入:src, slen主串

//輸入:patn, plen模式串

//輸入:nextval kmp演算法中的next函式值陣列

int kmp_search(char const* src, int slen, char const* patn, int plen, int const* nextval, int pos)

else

} if( j >= plen )

return i-plen;

else

return -1;

}

void get_next(char const* ptrn, int plen, int* nextval)  

else //迴圈的else部分

j = nextval[j]; //遞推

} }

void get_nextval(char const* ptrn, int plen, int* nextval)  

else //迴圈的else部分

j = nextval[j];

} }

字串模式匹配KMP演算法

next的值去改變每次匹配的位置 注意 字串的儲存最好用字元陣列,然後用字元輸入的形式,保證正確!利用求模式串的next值來分析遍歷,可以在不改變主串i的值的基礎上,只改變next j 的下標來遍歷 next j include include using namespace std void ge...

字串模式匹配KMP演算法

字串模式匹配指的是,找出特定的模式串在乙個較長的字串中出現的位置。很直觀的可以寫出下面的 來找出模式串在乙個長字串中出現的位置。1 2 樸素的模式匹配演算法 3 功能 字串的模式匹配 4 引數 5 s 目標串 6 p 模式串 7 pos 開發匹配的位置 8 返回值 9 匹配成功,返回模式串在目標串的...

字串模式匹配KMP演算法

字串模式匹配指的是,找出特定的模式串在乙個較長的字串中出現的位置。很直觀的可以寫出下面的 來找出模式串在乙個長字串中出現的位置。1 2 樸素的模式匹配演算法 3 功能 字串的模式匹配 4 引數 5 s 目標串 6 p 模式串 7 pos 開發匹配的位置 8 返回值 9 匹配成功,返回模式串在目標串的...