Sunday字符串搜索算法Delphi实现

Sunday算法描述

这玩意儿有人实现过,作为验证再稍微美化了一下:

function PosEx(KeyStr, TextStr: string): Integer;
var
  I: Integer;
  KeyLen, BuffLen: Integer;

  function Match(N: Integer): Boolean;
  var
    J: 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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值