2つの最長共通部分文字列を検索するJava文字列

参考ます。https://segmentfault.com/a/1190000007963594 

彼らは、空間的な複雑さを最適化されています

公共の静的な文字列LCS(文字列STR1、STR2文字列){
int型の最大値= 0; //は、最長の文字列の長さを記録
int型のインデックス= 0; //は同じの最後の添字最長の文字列を記録
IF(str1.length()> str2.length()){ 
文字列s = STR1。
STR1 = STR2。
STR2 = S;

INT [] ARR =新しいINT [str1.length()]; //この定義のみの一次元アレイは、それが二次元配列、本明細書に定義されます
int型uLeft = 0; //上位のデジタル録音左
以下のために(; I <str2.length(); int型iが0を= I ++) 
{(J ++; J <str1.length()のint J = 0)のための
IF(str1.charAt(J)== str2.charAt(I)){
(J == 0)の場合
[0] = 1 ARR。
そうしないと {
int型、A = ARR [J]。
ARR [J] = uLeft + 1。
uLeft = A;
}
IF(ARR [J]> MAX){
最大= ARR [J]。
インデックス= J + 1;
もし(最大== str1.length())//サブストリングstr1はstr2の直接STR1を返し示し、
STR1を返します。
}
} そうしないと {
uLeft = ARR [J]。
ARR [J] = 0;
}
}
str1.substring(インデックス - 最大、インデックス)を返します。
}

公開された16元の記事 ウォンの賞賛3 ビュー4538

おすすめ

転載: blog.csdn.net/qq_29697901/article/details/78282149