Kmp 算法到底有几种理解
收起
知与谁同
2018-07-18 12:01:40
1404
0
1
条回答
写回答
取消
提交回答
-
var
p:array[1..1000000] of longint;
i,j:longint;
a,b:ansistring;
begin
readln(a);
readln(b);
P[1]:=0;
j:=0;
for i:=2 to length(b) do
begin
while (j>0) and (B[j+1]<>B[i]) do j:=P[j];
if B[j+1]=B[i] then j:=j+1;
P[i]:=j;
end;
j:=0;
for i:=1 to length(a) do
begin
while (j>0) and (B[j+1]<>A[i]) do j:=P[j];
if B[j+1]=A[i] then j:=j+1;
if j=length(b) then
begin
writeln(i-length(b)+1);
halt;
j:=P[j];
end;
end;
writeln(0);
end.
2019-07-17 22:56:01