⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bm.pas

📁 bm算法的delphi实现
💻 PAS
字号:
unit BM;
//字符串匹配BM算法
interface

procedure BM_Input();
procedure BM_Dist();
procedure BM_Action();

implementation

uses StrUtils;
//正文,模式及距离变量
Var p,t:String;dist:Array[0..127] of integer;
procedure BM_Input();
Begin//输入正文及模式
Writeln('请输入字符串正文:');
readln(t);
Writeln('请输入字符串模式:');
readln(p);
End;
procedure BM_Dist();
//距离子程序
Var j,c,m:integer;
Begin
   m:=Length(p);//模式长度
   for c:=0 to 127 do//字典为128个字符
      dist[c]:=m;
   for j:=m-1 downto 1 do
      if dist[Integer(p[j])]=m then dist[Integer(p[j])]:=m-j;
End;
procedure BM_Action();
//字符串BM算法子程序
Var i,m,j,k,n:integer;c:char;
Begin
   m:=Length(p);
   n:=Length(t);
   i:=m;
   repeat
   j:=m;k:=i;
   while (j>0) and (p[j]=t[k]) do
      begin
         j:=j-1;k:=k-1;
      end;//while
   if j=0 then
      begin
         writeln('字符串开始位置在:',i-m+1);
         writeln('按任意键继续...');readln(c);i:=i+1;
      end//if
   else i:=i+dist[Integer(t[i])];
   until i>n;
   writeln('匹配完成,按任意键结束...');readln(c);
End;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -