Как найти количество лексикографически минимального поворота строки?
Например:
S = abab, N = 2 S = abca, N = 1 S = aaaa, N = 4
Пробовал алгоритм Дюваля, работает очень долго. Длина строки 100000000 символов.
Как найти количество лексикографически минимального поворота строки?
Например:
S = abab, N = 2 S = abca, N = 1 S = aaaa, N = 4
Пробовал алгоритм Дюваля, работает очень долго. Длина строки 100000000 символов.
Легко -- просто определите минимальный период строки. Строка, периодическая в минимальном периоде K
, будет давать идентичные (и, следовательно, лексикографически равные) строки ровно для N/K
разных поворотов, поэтому каким бы ни был лексикографический минимум, он будет результатом N/K
разных поворотов.
K
?
- person user3164559; 15.01.2014
O(N)
с потребностью в памятиO(1)
. Если вам это кажется медленным, бросьте, быстрее не будет! Программе нужно хотя бы прочитать всю строку, что дает минимальное времяO(N)
! - person Tomas   schedule 17.01.2014