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]);
}
}
}
- ¿Por qué las grandes empresas tienen una ronda de codificación algorítmica tan divertida para la contratación?
- ¿Cuánto tiempo lleva trabajar para descifrar la entrevista de codificación si no tengo una buena idea sobre la estructura de datos y el algoritmo?
- Dada la posición (x, y) de un caballero en un tablero de ajedrez 8X8, ¿cuál es la probabilidad de que permanezca dentro del tablero de ajedrez después de n movimientos?
- Cómo codificar un árbol en un formato de cadena de modo que el árbol pueda reconstruirse a partir de la codificación de la cadena
- ¿Cómo debo comenzar a prepararme para entrevistas SDET (Ingeniero de desarrollo de software en pruebas) para empresas de productos como Flipkart, Amazon, etc.?
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 ()));
}