Java cadena más larga para encontrar dos subcadena común

Referencia: https: //segmentfault.com/a/1190000007963594 

Están optimizados complejidad espacial

Cadena LCS estática pública (String str1, Cadena str2) {
int max = 0; // registra la longitud de la cadena más larga
int index = 0; // registra el último subíndice más larga cadena de la misma
si (str1.length ()> str2.length ()) { 
Cadena s = str1;
str1 = str2;
str2 = s;

int [] arr = new int [str1.length ()]; // esto define solamente matriz unidimensional, se define en el presente documento array bidimensional
int uLeft = 0; // superior izquierda de grabación digital
for (int i = 0; i <str2.length (); i ++) 
for (int j = 0; j <str1.length (); j ++) {
si (str1.charAt (j) == str2.charAt (i)) {
si (j == 0)
arr [0] = 1;
else {
int a = arr [j];
arr [j] = uLeft + 1;
uLeft = a;
}
si (arr [j]> max) {
max = arr [j];
index = j + 1;
si (máx str1.length == ()) // Muestra subcadena str2 str1 vuelve directamente str1
str1 regresar;
}
} Else {
uLeft = arr [j];
arr [j] = 0;
}
}
volver str1.substring (índice - max, índice);
}

Publicado 16 artículos originales · ganado elogios 3 · Vistas 4538

Supongo que te gusta

Origin blog.csdn.net/qq_29697901/article/details/78282149
Recomendado
Clasificación