An implementation of a classic Subword Graph (also known as Directed Acyclic Word Graph).
Ported from my Haskell version: https://github.com/danielnowakowski/Subword-Graph
Dawg allows you to solve complex string related algorithmic problems in linear time by providing functions for parameterized traversal. For further details please see the examples.
Dawg is also a NuGet package: https://www.nuget.org/packages/SubwordGraph/
Implementation is based on this lecture (in Polish, but contains pseudocode): http://smurf.mimuw.edu.pl/node/581