定位字串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 匹配成功,返回模式串在目標串的...