in reply to Unique-Character Substring
This can actually be done in O(N):
sub tony_UCS { local $_ = reverse shift; my $longest = my $tohere = ""; while (my $char = chop $_) { my $idx = index($tohere, $char); if ($idx != -1) { $longest = $tohere if (length $tohere > length $longest); $tohere = substr($tohere, $idx + 1) . $char; } else { $tohere .= $char; } } $longest = $tohere if (length $tohere > length $longest); return $longest; }
This is about 3 times faster on a short test string, and quickly goes up to 5 times faster for slightly longer strings...
Tony
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re (tilly) 1: Unique-Character Substring
by tilly (Archbishop) on Jan 20, 2001 at 21:22 UTC | |
by salvadors (Pilgrim) on Jan 20, 2001 at 21:40 UTC | |
|
Re: Re: Unique-Character Substring
by japhy (Canon) on Jan 20, 2001 at 20:07 UTC |