Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   задача со строкой (https://javascript.ru/forum/offtopic/43323-zadacha-so-strokojj.html)

Hekumok 01.12.2013 18:53

задача со строкой
 
Вам дана строка. Циклическим сдвигом строки s длины n называется строка, полученная из исходной путём отбрасывания первых 0 ≤ k < n символов и приписывания их в конец. Необходимо посчитать, сколько раз среди всех циклических сдвигов строки встречается лексикографически минимальный циклический сдвиг.
Ограничение по времени: 0.6 секунд
Ограничение по памяти: 256 мегабайт
Формат входного файла:
Единственная строка входного файла содержит строку S. Она непуста, состоит из маленьких латинских букв, и её длина не превосходит 10 000 000.
Формат выходного файла:
Выведите единственное число – искомое количество минимальных циклических сдвигов.

Пробовал таким способом, но выдаёт ошибку(( Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files (x86)\My Programms\EasyPHP-DevServer-13.1VC11\data\localweb\scripts\5\5.php on line 5
$S = preg_split('/\s+/', trim(file_get_contents('input.txt')))[0] ;
$str = $S ;
$n = 1 ;
for($i = 0; $i < strlen($S); $i++) {
	$S = substr($S, 1) . substr($S, 0, 1) ;
	if($S < $str) {
		$str = $S ;
		$n = 1 ;
	} else if($S == $str)
		$n++ ;
} ;
echo $n ;


Часовой пояс GMT +3, время: 13:34.