competitive/string/
mod.rs1use crate::algebra::{Gf2_63, Invertible, Mersenne61, Monoid, Ring, SemiRing};
4use crate::data_structure::RangeMinimumQuery;
5use crate::math::ConvolveRealFft;
6use crate::tools::Xorshift;
7
8#[codesnip::entry("KnuthMorrisPratt")]
9pub use self::knuth_morris_pratt::KnuthMorrisPratt;
10#[codesnip::entry("RollingHash")]
11pub use self::rolling_hash::{
12 Gf2_63x1, Gf2_63x2, Gf2_63x3, HashedRangeChained, Mersenne61x1, Mersenne61x2, Mersenne61x3,
13 RollingHasher,
14};
15#[codesnip::entry("StringSearch")]
16pub use self::string_search::{MultipleStringSearch, StringSearch};
17#[codesnip::entry("SuffixArray")]
18pub use self::suffix_array::SuffixArray;
19#[codesnip::entry("SuffixAutomaton")]
20pub use self::suffix_automaton::SuffixAutomaton;
21#[codesnip::entry("SuffixTree")]
22pub use self::suffix_tree::{MultipleSuffixTree, SuffixTree};
23#[codesnip::entry("wildcard_pattern_matching")]
24pub use self::wildcard_pattern_matching::wildcard_pattern_matching;
25#[codesnip::entry("ZAlgorithm")]
26pub use self::z_algorithm::Zarray;
27
28#[cfg_attr(nightly, codesnip::entry("KnuthMorrisPratt"))]
29mod knuth_morris_pratt;
30#[cfg_attr(
31 nightly,
32 codesnip::entry(
33 "RollingHash",
34 include("Xorshift", "algebra", "ring", "Gf2_63", "Mersenne61")
35 )
36)]
37pub mod rolling_hash;
38#[cfg_attr(
39 nightly,
40 codesnip::entry("StringSearch", include("SuffixArray", "RangeMinimumQuery"))
41)]
42mod string_search;
43#[cfg_attr(nightly, codesnip::entry("SuffixArray", include("binary_search")))]
44mod suffix_array;
45#[cfg_attr(nightly, codesnip::entry("SuffixAutomaton"))]
46mod suffix_automaton;
47#[cfg_attr(nightly, codesnip::entry("SuffixTree", include("SuffixArray")))]
48mod suffix_tree;
49#[cfg_attr(
50 nightly,
51 codesnip::entry(include("fast_fourier_transform", "Xorshift"))
52)]
53mod wildcard_pattern_matching;
54#[cfg_attr(nightly, codesnip::entry("ZAlgorithm"))]
55mod z_algorithm;