Я читаю о массивах LCP и их использовании в сочетании с массивами суффиксов при решении проблемы «Самая длинная общая подстрока». В этом видео говорится, что часовые, используемые для разделения отдельных строк, должны быть уникальными, а не содержится в любой из самих струн.
Если я не ошибаюсь, причина этого в том, что когда мы создаем массив LCP (сравнивая, сколько символов имеют общие смежные суффиксы), мы не учитываем значение дозорного в случае, когда два дозорных находятся с одним и тем же индексом. в обоих сравниваемых суффиксах.
Это означает, что мы можем написать такой код:
for each character c in the shortest suffix
if suffix_1[c] == suffix_2[c]
increment count of common characters
Однако, чтобы облегчить это, нам нужно перепрыгнуть через некоторые препятствия, чтобы убедиться, что мы используем уникальных часовых, , о которых я спрашивал здесь. а>
Однако было бы более простым (для реализации) решением не было бы просто подсчитывать количество общих символов, останавливаясь, когда мы достигаем (единственного, уникального) сигнального символа, например:
set sentinel = '#'
for each character c in the shortest suffix
if suffix_1[c] == suffix_2[c]
if suffix_1[c] != sentinel
increment count of common characters
else
return
Или мне здесь не хватает чего-то принципиального?