串的模式匹配

2021-06-16 18:55:34 字數 613 閱讀 6997

以前每次看到字串匹配,一律跳過,今天耐著性子研究了下,依舊是半混沌狀態,先整理放在這,以備後用。這篇文章幫助很大,樸素匹配演算法&kmp演算法,收藏先。

1. 樸素匹配演算法

int patternmatch_common(const char *pstring, const char *ppattern)

if ('\0'==*pstring || '\0'==*ppattern)

int lengthofstring=strlen(pstring), lengthofpattern=strlen(ppattern);

int indexofstring=0, indexofpattern=0;

while (indexofstring

2.kmp演算法

真心懂得不徹底,就記住一句話:在p[0~j-1]中找乙個最長真字首使得它等於p[0~j-1]的最長真字尾,把這個長度值放進

pnext[j]

void getnext(const char *ppattern, int *pnext)

{ int k=-1, j=0, length=strlen(ppattern);

pnext[0]=-1;

while (j

串的模式匹配

最近在學 vc include stdafx.h include include define max size 1000 串的模式匹配 功能 找出str2字串在str1字串中第一次出現的位置 不包括串結束符 返回 該位置的序號 環境 visual c 2008 注意 1.此為樸素的模式匹配演算法,...

串的模式匹配

子串的定位操作通常稱作串的模式匹配。index s,t,pos t被稱為模式串。直觀演算法 int index string s,string t,int pos else if j lent return i lent else return 0 直觀演算法很簡單,如果字串中當個字元匹配,主串指標...

串的模式匹配

問題描述 對於兩個字串a,b。請設計乙個高效演算法,找到b在a中第一次出現的起始位置。若b未在a中出現,則返回 1。給定兩個字串a和b,及它們的長度lena和lenb,請返回題目所求的答案。測試樣例 acbc 4,bc 2 返回 2 思路 1,該型別題目的一般思路是暴力求解,採用兩層迴圈,我們會從a...