2011-10-19 4 views
2

Knuth-Morris-Prattアルゴリズムを複数回検索するためにO(n)時間の複雑さを実行することはできますか?複数のoccurencesのKMPアルゴリズム

+1

あなたはKMPアルゴリズムを実行して、O(Kn)= O(n)でこれらのKの異なる単語の出現を見つけることができます –

答えて

2

文字列S [0、...、N]があるとします。接頭辞配列のi番目のエントリは、接尾辞に一致するS [0、...、i]の最大接頭辞の長さを格納することを思い出してください。 $ subjectというパターンのプレフィックス配列Pを計算することができます($がsubjectにないと仮定します)。 P [i] == length(パターン)のようなインデックスを見つけることは、線形時間で行うことができます。

+0

非常にきれいな解決策、ありがとうございます。 –

関連する問題