巨大なテキストに部分文字列 (入力として) を含む単語を見つけようとしています。テキストは次のようになります: *america*python*erica*escape*.. 例: 入力: "rica" => 出力: america,erica
接尾辞配列を使用します。
私の擬似コード(pythonlike)は次のとおりです。
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 配列はアルゴリズムの実行時間を改善するはずですが、その方法がわかりません。アドバイスをいただけますか?
前もって感謝します!