在指定字串中查詢子串,推薦試用sunday演算法,具體sunday演算法的介紹,推薦閱讀下面**:
作者根據sunday演算法,整理原始碼如下,其中,先實現sundaymemmem函式,這個函式實現的功能是:在指定長度的記憶體空間中,查詢指定長度的位元組序列,sundaystrstr函式進一步簡單封裝sundaymemmem,實現子串查詢。原始碼已經由作者進行了充分的測試,可放心使用。謝謝!
#include #include #include char* sundaymemmem(char* stext, int ntextlength, char* skeyword, int nkeylength)
if(ntextlength == 0)
if(nkeylength > ntextlength)
int nposarray[256];
memset(nposarray, 0, 256*sizeof(int));
int i;
i = 0;
char* pshift;
pshift = skeyword + nkeylength - 1;
char* ptail;
ptail = skeyword + nkeylength;
while(pshift >= skeyword)
}pshift--;
}//
pshift = stext;
char* poffset;
poffset = skeyword;
char* pbase;
pbase = pshift;
int nmatched;
nmatched = 0;
char* pkeytail = skeyword + nkeylength;
char* ptexttail = stext + ntextlength;
while((poffset < pkeytail) && (pshift < ptexttail))
else
pshift = pbase;
poffset = skeyword;
nmatched = 0;
continue;
}pshift++;
poffset++;
nmatched++;
}if(nmatched == nkeylength)
else
}char* sundaystrstr(char* stext, char* skeyword)
// 測試子串查詢
int main(int argc, char* ar**)
else
return 0;
}
Sunday演算法 查詢字串
sunday演算法是用於查詢子串的一種演算法,具體的應用場景看這裡 相比於kmp,bm演算法,sunday演算法更快,並且更好理解 自認為哈 下面用比較正式的語言介紹一下該演算法 原字串為文字串,匹配的子串為模式串。從前往後匹配,在匹配失敗時,關注的是文字串中參加匹配的最末位字元的下一位字元。如果該...
字串匹配 sunday演算法
原題 lintcode題目 字串查詢 又稱查詢子字串 是字串操作中乙個很有用的函式。你的任務是實現這個函式。對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。字串匹配最常見的就是km...
字串匹配sunday演算法
在網上看到了一種比kmp和bm演算法還快字串匹配演算法,就看了一下,並且發現一些部落格上寫的 是錯誤的,於是我也寫了乙個,leetcode上測試通過。首先對sunday演算法進行一下講解 從別的地方複製過來的,講的確實不錯 好了,sunday演算法還真的很好理解,用下面的例子來說明吧 j k t h...