posts - 241,  comments - 527,  trackbacks - 0

kbmmw 5.10 版本中实现了一个非常好用的字符串搜索算法,即Boyer-Moore算法。

在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前被认为最高效的字符串搜索算法,

它由Bob Boyer和J Strother Moore设计于1977年。 一般情况下,比KMP算法快3-5倍。该算法常用于文本编辑器中的搜索匹配功能,

 

 详细的算法原理大家可以参照一下的链接研究。

 

字符串匹配的Boyer-Moore算法

在kbmmw 里面,我们可以直接使用就OK了。

procedure TForm1.Button1Click(Sender: TObject);
var
  alltext,stext:string;
  i:integer;
begin
   alltext:='HERE IS A SIMPLE EXAMPLE' ;
   stext:='EXAMPLE';


  i:= TkbmMWBoyerMoore.SearchFor(Tencoding.UTF8.GetBytes(alltext), Tencoding.UTF8.GetBytes(stext) );

    memo1.Lines.Add('BoyerMoore search:'+i.ToString);

 i:= pos(stext,alltext);

 memo1.Lines.Add('pos:'+i.ToString);
end;

 运行结果

 

 由于第一个是按字节的,因此以0为基数,结果为17.

posted on 2019-11-25 18:27  xalion  阅读(...)  评论(... 编辑 收藏