C Текстовые алгоритмы - PullRequest
2 голосов
/ 09 мая 2011

Мне любопытно несколько вещей о текстовых алгоритмах.

Например, у нас есть двоичное слово: 1011101110001101 И как искать конкретные фиксированные подпоследовательности в этом слове?

Например, как найти самую длинную фиксированную подпоследовательность (назовем это LFS) в слове, которое имеет одинаковое количество единиц и нулей?

И еще, как найти LFS с большим количеством единиц, чем 0?

Пример: слово: 1001010 мы ищем LFS с одинаковым количеством 1 и 0.

Так что этот LFS будет 100101

Но с более 1, чем 0 у нас будет: 101

Как решить это быстрее, чем O (n ^ 2)?

Крис.

1 Ответ

4 голосов
/ 09 мая 2011

Вы можете сделать Trie из ввода.

Это поможет вам найти строки LFS.

Вы можете изменить созданиеалгоритм подсчета 1 и 0, и тогда вы легко найдете эти числа на узлах подстроки.

Посмотрите также Дерево суффиксов ..

Creation = O (n)
Для поиска вы, вероятно, будете делать что-то вроде BFS, которое также будет похоже на O (N)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...