Изменения

Перейти к: навигация, поиск
Псевдокод
'''int''' n = s.length
'''int''' m = w.length
'''int''' hashS = hash(s[10..m-1]) '''int''' hashW = hash(w[10..m-1]) '''for''' i = 1 0 '''to''' n - m + 1
'''if''' hashS == hashW
answer.add(i)
Новый хеш <tex>hashS</tex> был получен с помощью быстрого пересчёта. Для сохранения корректности алгоритма нужно считать, что <tex>s[n + 1]</tex> {{---}} пустой символ.
 
Рекомендуется брать <tex>r = 2^{64}</tex> (чтобы модуль брался автоматически при переполнении типов), а <tex>p</tex> - простое число, больше кода самого большого символа в строках.
===Время работы===
Анонимный участник

Навигация