私は100個のキーワード(空白を含めることができます)があり、大きなテキストに何回出現するかを調べる必要があります。これを速やかに達成するにはどうすればよいでしょうか?C/C++で大文字でキーワード検索を行う最速の方法
次のように私の現在の考えは次のとおりです。
-
は、ノード以下のテキストといつでもcharが(すなわちノード - >次== NULLを発生しませんを通じて接尾辞木に
- 徒歩キーワードを回し
- )接尾辞木に、次の単語をスキップして、接尾辞木の構造体は、このようなものになります
再度検索:
struct node {
int count; //number of occurences (only used at leaf node)
/* for each lower-case char, have a pointer to either NULL or next node */
struct node *children[26];
};
を
私はこれを行うより速い方法があると確信していますが、それは何ですか?スペース効率は、このケースではそれほど大きな問題ではありません(したがって、検索の高速化のために子供の配列)が、時間効率は本当にです。助言がありますか?
+1、大きいテキストの場合は –
Boyer-Mooreは非常に高速ですが、繰り返しのキーワード検索でも最も高速です。すべてのキーワードに対して接尾辞ツリーを一度作成してからテキストをチェックするよりも、「for(i = 0; i <100; i ++)booyermore_search(haystack、needle [i])」が高速です一度? – Doa
OK、あなたは私を考えさせました。私の編集を参照してください。 –