The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

String::LCSS_XS - Find The Longest Common Substring of Two Strings.

SYNOPSIS

  use String::LCSS_XS;
  
  my $longest = lcss ( "zyzxx", "abczyzefg" );
  print $longest, "\n";

DESCRIPTION

String::LCSS_XS computes the Longest Common Substring shared by two strings. It is a C implementation of String::LCSS and uses a dynamic programming algorithm with both runtime and memory usage of O(mn).

EXPORT

 char* lcss(char* s, char* t)

PERFORMANCE

  my $s = 'i pushed the lazy dog into a creek, the quick brown fox told me to';
  my $t = 'the quick brown fox jumps over the lazy dog';

                    Rate    String::LCSS String::LCSS_XS
 String::LCSS     42.5/s              --           -100%
 String::LCSS_XS 32609/s          76628%              --
  

BUGS AND LIMITATIONS

Probably many.

If there are multiple lcss (with the same length), then this implementation returns only the first found.

String::LCSS_XS currently does not support String::LCSS feature in list context where it returns the lcss positions.

String::LCSS returns undef when the lcss has size 1. String::LCSS_XS returns this single character.

CREDITS

Daniel Yacob has written String::LCSS. I stole his API, test suite and SYNOPSIS.

SEE ALSO

String::LCSS - A pure perl implementation (but O(n^3) runtime)

Gusfield, Dan. Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. USA: Cambridge University Press. ISBN 0-521-58519-8.

AUTHOR

Markus Riester, <mriester@gmx.de>

COPYRIGHT AND LICENSE

Copyright (C) 2007 by Markus Riester

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.