Cómo imprimir todas las subsecuencias comunes más largas de dos cadenas

Para obtener más detalles, consulte este enlace:

Todos los posibles LCS (subsecuencia común más larga) de dos cadenas

static int arr [] [];
static void lcs (String s1, String s2) {
para (int i = 1; i <= s1.length (); i ++) {
para (int j = 1; j <= s2.length (); j ++) {
if (s1.charAt (i – 1) == s2.charAt (j – 1))
arr [i] [j] = arr [i – 1] [j – 1] + 1;
más
arr [i] [j] = Math.max (arr [i – 1] [j], arr [i] [j – 1]);
}
}
}

Conjunto estático lcs (String s1, String s2, int len1, int len2) {
if (len1 == 0 || len2 == 0) {
Establecer set = new HashSet ();
set.add (“”);
conjunto de retorno;
}
if (s1.charAt (len1 – 1) == s2.charAt (len2 – 1)) {
Set set = lcs (s1, s2, len1 – 1, len2 – 1);
Establecer set1 = new HashSet ();
for (String temp: set) {
temp = temp + s1.charAt (len1 – 1);
set1.add (temp);
}
volver set1;
} más {
Establezca set = new HashSet ();
Establecer set1 = new HashSet ();
if (arr [len1 – 1] [len2]> = arr [len1] [len2 – 1]) {
set = lcs (s1, s2, len1 – 1, len2);
}
if (arr [len1] [len2 – 1]> = arr [len1 – 1] [len2]) {
set1 = lcs (s1, s2, len1, len2 – 1);
}
for (String temp: set) {
set1.add (temp);
}
//System.out.println(“In lcs “+ set1);
volver set1;

}
}

public static void main (String [] args) {
Cadena s1 = “bcab”;
Cadena s2 = “abc”;
arr = nuevo int [s1.length () + 1] [s2.length () + 1];
lcs (s1, s2);
System.out.println (lcs (s1, s2, s1.length (), s2.length ()));
}

More Interesting

¿Por qué la mayoría de los desarrolladores de software apestan a las preguntas de entrevista tipo algoritmo?

¿Construir un sitio web de comercio electrónico decente (back-end + front-end) es lo suficientemente impresionante como para incluir un currículum / CV para una pasantía en una empresa de alta tecnología?

Además de la búsqueda binaria, ¿hay otros ejemplos de código que tengan un tiempo de ejecución de O (log n)?

¿Cuáles son las preguntas que se hacen durante las entrevistas técnicas para los graduados de CSE?

¿Cuáles son los elementos comunes entre dos matrices de tamaño n y m? ¿Cuál es el tiempo y la complejidad de la memoria?

Dada una matriz sin clasificar, ¿cómo podemos asignar cada valor al primer valor que viene después y es más grande (o asignar a -1 si no existe ese número)?

Tengo una entrevista MakeMyTrip en una semana para un puesto de desarrollador de Java. ¿Qué preguntas y temas puedo esperar?

Como estudiante en un campamento de programación de 12 semanas en SF, ¿cuál es la mejor manera de prepararse para futuras entrevistas técnicas?

¿Cuáles son los requisitos previos para programar entrevistas en empresas tecnológicas y recomendar libros?

Cómo encontrar la matriz definida positiva más cercana a una matriz dada

¿Qué opinas de CodePair by HackerRank?

¿Cuál es la forma más rápida de encontrar la mediana de una matriz no ordenada de n enteros? ¿Hay una forma más rápida que ordenarlos y luego usar el valor medio?

¿Escribir un código ordenado para encontrar LCA de dos nodos? y cual es la complejidad?

En una entrevista de codificación, ¿debo escribir una solución descriptiva o concisa?

¿Qué tan importante es conocer los patrones de diseño para entrevistas para un desarrollador experimentado?