Sunday字串搜尋演算法Delphi實現

2021-06-08 09:27:50 字數 877 閱讀 5861

sunday演算法描述

這玩意兒有人實現過,作為驗證再稍微美化了一下:

function po***(keystr, textstr: string): integer;

var i: integer;

keylen, bufflen: integer;

function match(n: integer): boolean;

varj: integer;

begin

result := true;

for j := 0 to keylen - 1 do

if textstr[j + n] <> keystr[j + 1] then begin

result := false;

exit;

end;

end;

begin

result := 0;

i := 1;

keylen := length(keystr);

bufflen := length(textstr);

while not match(i) do

begin

if i > bufflen then break;

if pos(textstr[i + keylen], keystr) <> 0 then begin

i := i + 1 + keylen - pos(textstr[i + keylen], keystr);

end else begin

i := i + keylen;

end;

end;

if match(i) then

result := i;

end;

字串搜尋演算法

參考文獻 google boyer moore 1.前言 字串搜尋是乙個基本的操作,c庫函式中也提供了strstr 函式進行字串搜尋,應該是屬於線性搜尋。此外,為提高搜尋速度,人們又發展 出一些快速搜尋演算法,如boyer moore演算法等,其與線性搜尋的區別是當發現模式不匹配時,不是象線性搜尋那...

字串搜尋演算法總結

因為在網上搜尋hash演算法的知識,無意中又找到一些字串搜尋演算法。由於之前已經學習過一些搜尋演算法,覺得應該可以歸為一類。因此就寫一篇文章來記錄下學習的過程。問題 在一長字串中找出其是否包含某子字串。首先當然還是簡單演算法,通過遍歷來檢索所有的可能 public static int search...

字串匹配 暴力搜尋演算法

主要特徵 1 沒有預處理階段 2 需要常量額外空間 3 通常需要模式串視窗向右移動乙個位置 4 可以按照任意順序進行比較 5 搜尋的時間複雜度為 o mn 6 文字字元期望比較次數 2n演算法描述 暴力搜尋演算法由文字串中從0到 n m所有位置的比較組成,無論是否從模式串的起始位置開始,每次匹配過後...