質問:私は長い文字列を持っており、その文字列の下にあるすべてのサブ文字列の出現回数を調べ、すべてのサブ文字列のリストとその数を出力する必要があります(if countは> 1)をカウントする。Count C#
例:
String = "abcdabcd"
結果:
Substrings Count
abcd 2
abc 2
bcd 2
ab 2
bc 2
cd 2
a 2
b 2
c 2
d 2
問題:私の文字列が5000文字の長さにすることができ、私はこれを達成するための効率的な方法を見つけることができないです(効率性は非常に重要ですアプリケーション用)
アルゴリズムが存在するか、マルチスレッド化が可能ですか?助けてください。使用
してください、*接尾辞木を見てみましょう*または/および*接尾辞配列* https://en.wikipedia.org/ wiki/Suffix_array –
@DmitryBychenko:私は接尾辞ツリーと接尾辞配列で試しましたが、すべての下位文字列を見つけるために接尾辞ツリーから可能な方法はありません。 しかし、サブストリングが入力として与えられた場合、サフィックスツリーを介してその出現回数を非常に効率的に見つけることができます。 –
[文字列のリスト内で共通の文字列を検索する]の可能な複製(http://stackoverflow.com/questions/13509277/find-a-common-string-within-a-list-of-strings) – Clint