Изменения

Перейти к: навигация, поиск

Z-функция

102 байта убрано, 17:21, 9 мая 2012
Код алгоритма
==Код алгоритма==
int[] z getZfunction(String p) { int[] ans = new int[// p.length()];— исходная строка, n — её длина ansanswer[0] = 0; int n = p.length(); int left = 0; int right = 0; for (int i = 1; i < ..(n; i++- 1)) { if (i > right) { int j = 0; while (i + j < n && p.charAt([i+j) ] == p.charAt([j])) { j++; } ans answer[i] = j; left = i; right = i + j - 1; } else { if (ansanswer[i - left] < right - i + 1) { ansanswer[i] = ansanswer[i - left]; } else { int j = 1; while (j + right < n && p.charAt([j+right-i) ] == p.charAt([right + j])) { j++; } ansanswer[i] = right + j - i; left = i; right = right + j - 1; } } } return ans; }answer
== Источники ==
[http://habrahabr.ru/post/113266/ Поиск подстроки и смежные вопросы — Хабр]<br>
[http://ru.wikipedia.org/wiki/Z-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F Z-функция — Википедия]
172
правки

Навигация