Изменения

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

Двусторонний алгоритм

90 байт убрано, 20:47, 27 апреля 2016
Псевдокод
'''while''' pos + pattern.length <tex>\leqslant</tex> text.length
<font color=green>//первый этап: просмотр <tex>v</tex> слева направо</font>
i = <tex>\max</tex>(l, memPrefix) + 1 '''while''' i <tex>\leqslant</tex> pattern.length '''and''' pattern[i] <tex>=</tex> text[pos + i]
i++
'''if''' i <tex>\leqslant</tex> pattern.length
pos = pos + <tex>\max</tex>(i <tex>-</tex> l, memPrefix <tex>-</tex> p <tex>+</tex> 1)
memPrefix = 0
'''else'''
'''if''' j <tex>\leqslant</tex> memPrefix
occurences = pos
pos = pos <tex>+</tex> p memPrefix = pattern.length <tex>-</tex> p
'''return''' occurences
Анонимный участник

Навигация