私は、n個のクエリ文字列内の文字の出現を見つけたい:例えば 文字列は次のとおりです。「i_love_mathematics」 とタスクが発生見つけることです。「i」は範囲で文字列内の文字のうち、いくつかのクエリの出現回数をカウントしますか?
を:
1-4(a substring starting from 1st character and ending at 4th)
2-5
3-10
'_' の範囲内:
1-10
3-9
出力は次のようになります。
1
0
0
2
1
同様の質問は、文字列内の文字の出現回数を調べることでしたが、その複雑さはO(N)でしたが、この場合、非常に複雑になるでしょう。この問題を解決するために使用できるデータ構造我々は、次の
の手紙「を実行クエリに答えるためにしたい場合は
複雑さは 'O(q * n)'となります。ここで 'q'はクエリの数であり、単純な実装の場合は' n'は文字列の長さです。あるいは、ツリーを使用して複雑さを 'O(q log n)'に減らし、空間複雑度を 'O(n)'にすることができます。または、各文字を特定の文字が発生するインデックスのリストにマップするテーブルを使用することもできます。複雑さは変わらない。 – Paul