An unrestricted implementation of the Multi-Shift-And algorithm for multiple exact pattern matching. Patterns can be longer than the computer word size.
The example program (main.cpp) is coded to only take DNA alphabet (A, C, G and T) patterns, but the UMSA class itself can handle any ASCII patterns and any text.
Example program usage: ./umsa DNA_SEQUENCE DNA_PATTERN1 [DNA_PATTERN2 ...]