Longest Common Substringのアルゴリズムを見つけました。これは通常、サイズのdynamic programming
2 次元配列を使用して を使用して行われます。mxn
m
n
2 つの文字列に対して次の行列を作成します。
M[i][j] = 1 if s1[i]==s2[j] else 0.
たとえば、文字列が次の場合:abcxy
およびpqaabx
マトリックスは次のようになります。
a b c x y
p 0 0 0 0 0
q 0 0 0 0 0
a 1 0 0 0 0
a 1 0 0 0 0
b 0 1 0 0 0
x 0 0 0 1 0
1
ここで、左上から右下の方向にあるすべての対角線で s の最大連続シーケンスを検索します。
この中の最大値が答えになります。
配列を明示的に使用せずに上記の操作を実行できます。時間の複雑さはまだO(M*N)
です。したがって、メモリは必要ありません。
誰かが私が間違っているところを指摘できますか?