Быстрый способ найти подстроку в тексте, используя суффикс массив и lcp

Я пытаюсь найти слова, которые содержат подстроку (в качестве входных данных) в большом тексте. Текст выглядит так: * америка * питон * эрика * escape *.. Пример: ввод: "рика" => вывод: америка, эрика

Я использую массив суффиксов.

Мой псевдокод (похожий на питон):

firstChar=input[0] // the first character of input
suffixArray=getSuffixArray(text) // suffix array
result=[]

for every index of suffix array which points to firstChar:
    length=len(input)
    indexText=text[suffixArray[index]]
    indexes=[]

    if input in text[indexText: indexText+length]:
        word=find whole word containig this index between '*' 
        result.append(word)

Это работает, но это слишком медленно. Массив LCP должен улучшить время выполнения алгоритма, но я не могу понять, как. Вы дадите мне совет?

Заранее спасибо!

1 ответ

Свободный код Python для массива суффиксов - это эффективный способ найти самую длинную повторяющуюся строку. Он работает до 100 миллионов символов на персональном компьютере.

Другие вопросы по тегам