competitive/string/
mod.rs1use crate::algebra::{Gf2_63, Invertible, Mersenne61, Monoid, Ring, SemiRing};
4use crate::algorithm::binary_search;
5use crate::math::{Convolve, ConvolveSteps};
6use crate::num::{Zero, montgomery};
7use crate::tools::Xorshift;
8
9#[codesnip::entry("KnuthMorrisPratt")]
10pub use self::knuth_morris_pratt::KnuthMorrisPratt;
11#[codesnip::entry("RollingHash")]
12pub use self::rolling_hash::{
13 Gf2_63x1, Gf2_63x2, Gf2_63x3, HashedRangeChained, Mersenne61x1, Mersenne61x2, Mersenne61x3,
14 RollingHasher,
15};
16#[codesnip::entry("SuffixArray")]
17pub use self::suffix_array::SuffixArray;
18#[codesnip::entry("wildcard_pattern_matching")]
19pub use self::wildcard_pattern_matching::wildcard_pattern_matching;
20#[codesnip::entry("ZAlgorithm")]
21pub use self::z_algorithm::Zarray;
22
23#[cfg_attr(nightly, codesnip::entry("KnuthMorrisPratt"))]
24mod knuth_morris_pratt;
25#[cfg_attr(
26 nightly,
27 codesnip::entry(
28 "RollingHash",
29 include("Xorshift", "algebra", "ring", "Gf2_63", "Mersenne61")
30 )
31)]
32pub mod rolling_hash;
33#[cfg_attr(nightly, codesnip::entry("SuffixArray", include("binary_search")))]
34mod suffix_array;
35#[cfg_attr(nightly, codesnip::entry(include("NumberTheoreticTransform")))]
36mod wildcard_pattern_matching;
37#[cfg_attr(nightly, codesnip::entry("ZAlgorithm"))]
38mod z_algorithm;