2
範囲内の文字列内の異なる部分文字列の数
文字列の長さが、LCP配列を使用すると、個別の部分文字列の数を線形時間で見つけることができます。文字列全体で一意の部分文字列の数を求める代わりに、インデックスを含むクエリ、が、文字列指定されたクエリ範囲内の異なる部分文字列の数を求めます。。SSSnnnSSSqqq(i,j)(i,j)(i,j)0≤i≤j<n0≤i≤j<n0 \le i \le j < nS[i..j]S[i..j]S[i..j] 私のアプローチは、LCP配列の線形時間構築を各クエリに適用することです。複雑さを与えます。クエリの数はオーダーに増加する可能性があるため、すべてのクエリに応答するとます。O(|q|n)O(|q|n)O(|q|n)nnnO(n2)O(n2)O(n^2) すべてのクエリの線形時間よりも、それを行うことができますか? 一般に、サフィックス配列、サフィックスツリー、lcp配列がすでにある文字列の1つのプロセスサブ文字列がそれらの構造に関連しなくなった場合、もう一度最初から構築する必要がありますか?