oxicuda_seq/string/mod.rs
1//! Classical string algorithms.
2//!
3//! This module collects combinatorial string algorithms that operate on raw
4//! byte sequences, complementing the edit-distance routines in
5//! [`crate::distance`] and the alignment code in [`crate::alignment`].
6//!
7//! * [`mod@manacher`] — Manacher's 1975 linear-time longest-palindromic-substring
8//! algorithm, exposing the full per-center radius array.
9//! * [`suffix_automaton`] — the suffix automaton (DAWG) of Blumer et al. (1985)
10//! with Crochemore's online clone-on-split construction, supporting substring
11//! membership, distinct-substring counting, occurrence counting, and longest
12//! common substring.
13//! * [`z_algorithm`] — Gusfield's 1997 Z-array in linear time via the Z-box,
14//! plus linear-time exact pattern matching through the `P $ T` construction.
15//! * [`suffix_array`] — the suffix array via SA-IS (Nong–Zhang–Chan 2009) with
16//! Kasai's LCP array (2001) and binary-search pattern matching.
17//! * [`fm_index`] — the Burrows–Wheeler transform (1994) and FM-index
18//! (Ferragina–Manzini 2000) built on the suffix array, with invertible BWT
19//! and backward-search `count`/`locate`.
20
21pub mod fm_index;
22pub mod manacher;
23pub mod suffix_array;
24pub mod suffix_automaton;
25pub mod z_algorithm;
26
27pub use fm_index::FmIndex;
28pub use manacher::{Manacher, longest_palindrome_str, manacher};
29pub use suffix_array::SuffixArray;
30pub use suffix_automaton::{SuffixAutomaton, longest_common_substring};
31pub use z_algorithm::{z_array, z_search};