bm.~pas
来自「bm算法的delphi实现」· ~PAS 代码 · 共 55 行
~PAS
55 行
unit BM;
//字符串匹配BM算法
interface
procedure BM_Input();
procedure BM_Dist();
procedure BM_Action();
implementation
uses SysUtils,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 + =
减小字号Ctrl + -
显示快捷键?