I hate writing Perl that looks like Pascal. Oh well...
sub JDP::longest_palindrome # operates on $_
{
my $pal;
for my $i ( 0 .. length($_) )
{
last if defined($pal) && length($_)-$i < length($pal);
my $j = rindex $_, substr( $_, $i, 1 );
while ( $j > $i )
{
my $s = substr $_, $i, $j-$i+1;
if ( $s eq reverse $s ) # it's a palindrome
{ # but is it the longest yet found?
$pal = $s unless defined $pal && length($pal) > length
+($s);
}
$j--;
$j = rindex $_, substr( $_, $i, 1 ), $j;
}
}
$pal
}
|
Edit by tye, change PRE to CODE around long lines, close FONT tag