8#include <string/CyclicString.h>
32 template <
class SymbolType >
36template <
class SymbolType >
39 int * f =
new int [ 2 * data.size ( ) ];
42 for (
size_t j = 1; j < 2 * data.size ( ); ++j ) {
43 int i = f [ j - k - 1 ];
44 while (
i != -1 && data [ j % data.size ( ) ] != data [ ( k +
i + 1 ) % data.size ( ) ] ) {
45 if ( data [ j % data.size ( ) ] < data [ ( k +
i + 1 ) % data.size ( ) ] ) k = j -
i - 1;
48 if (
i == -1 && data [ j % data.size ( ) ] != data [ k % data.size ( ) ] ) {
49 if ( data [ j % data.size ( ) ] < data [ ( k +
i + 1 ) % data.size ( ) ] ) k = j;
51 }
else f [ j - k ] =
i + 1;
59 for (
unsigned l = k % data.size ( ); l < data.size() + k % data.size ( ); ++l ) {
60 rotated.push_back ( data [ l % data.size ( ) ] );
Class extending the vector class from the standard library. Original reason is to allow printing of t...
Definition: vector.hpp:45
Cyclic string.
Definition: CyclicString.h:60
const ext::set< SymbolType > & getAlphabet() const &
Definition: CyclicString.h:106
Definition: NormalizeRotation.h:19
static string::CyclicString< SymbolType > normalize(const string::CyclicString< SymbolType > &string)
Definition: NormalizeRotation.h:37
int i
Definition: AllEpsilonClosure.h:118
Definition: RandomStringFactory.cpp:12