字串查詢 Sunday演算法原始碼實現

2021-10-07 23:04:21 字數 1393 閱讀 9245

在指定字串中查詢子串,推薦試用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...