Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find the number of the lexicographically minimal string rotation?

How to find the number of lexicographically minimal string rotation?

For example:

S = abab, N = 2
S = abca, N = 1
S = aaaa, N = 4

I tried Duval's algorithm, it works very long. The string length of 100000000 characters.

like image 609
user3164559 Avatar asked Jan 09 '14 16:01

user3164559


1 Answers

Easy -- just determine the minimum period of the string. A string which is periodic in minimal period K will produce identical (and hence lexicographically equal) strings for exactly N/K different rotations, so whatever the lexicographic minimum is, it'll be the result of N/K different rotations.

like image 164
Sneftel Avatar answered Sep 23 '22 12:09

Sneftel