120
правок
Изменения
→Псевдокод
Node fastScan(Node head):
'''return''' head
skipped = head.length
curPos = head.start
skipped--
curPos++
curNode = head.parent.suf
curNode = curNode.children[s[curPos]]
skipped -= curNode.length
curPos += curNode.length
разделим ребро и запишем новую вершину в curNode
head.suf = curNode
curNode = node
curPos = start + node.depth
child = curNode.children[s[curPos]]
edgePos = 0
curPos++
edgePos++
curNode = child
разделим ребро в месте несовпадения, запишем в curNode и выйдем из цикла
'''return''' curNode