Boyer-Moore string search: Difference between revisions

m
(Added Perl)
m (→‎{{header|Perl}}: off-by-one)
Line 485:
 
sub suffixes ($m,@pat) {
my($f, $g) = (0, $m-1);
my @suff = (0) x $m-1; push @suff, $m;
for (my $i = $m-2; $i >= 0; --$i) {
Line 504:
my @bmGs = ($m) x $m;
 
for my $k (reverse 0..$m-12) {
if ($suff[$k] == $k + 1) {
for (my $j=0; $j < $m-1-$k; $j++) { $bmGs[$k]=$m-1-$k if $bmGs[$j] == $m }
Line 524:
my @I;
while ($j <= $n - $m) {
my $i = $m - 1;
for ($i = $m - 1; $i >= 0 and $pat[$i] eq $txt[$i + $j]; ) { $i-- }
if ($i < 0) {
push @I, $j;
2,392

edits