Pagini recente » Cod sursa (job #910905) | Cod sursa (job #2931911) | Cod sursa (job #3031308) | Cod sursa (job #287451) | Cod sursa (job #568483)
Cod sursa(job #568483)
var s:string;
f,g:text;
urm:array[0..255] of integer;
k,m,i:integer;
procedure prefix(p:string;m:integer);
var k,x:integer;
begin
k:=0;
urm[1]:=0;
for x:=2 to m do
begin
k:=urm[x-1];
while(k>0)and(p[k+1]<>p[x])do
k:=urm[k];
if p[k+1]=p[x] then
inc(k);
urm[x]:=k;
end;
end;
begin
assign(f,'strmatch.in');reset(f);
assign(g,'strmatch.out');rewrite(g);
readln(f,s);
readln(f,t);
m:=length(s);
n:=length(t);
prefix(s,m);
k:=0;
for x:=1 to n do
begin
while(k>0)and(s[k+1]<>t[x])do
k:=urm[k];
if p[k+1]=t[x] then
inc(k);
if k=m then
begin
inc(nr);
v[nr]:=t-m;
k:=urm[k];
end;
end;
writeln(g,nr);
for i:=1 to nr do
write(g,v[i],' ');
close(f);
close(g);
end.