Concatene las tres cadenas juntas y sepárelas con un separador que se garantiza que no se mostrará en ninguna de las cadenas. Ahora construya la matriz de sufijos y la matriz de lcp para esa nueva cadena. Ahora definamos algunas variables i, j, total, matriz de banderas de tamaño 3, todas inicializadas con ceros. Ahora comencemos a examinar los sufijos ordenados uno por uno en orden, si el valor total es menor que 3 y vemos que un sufijo que pertenece a una de las tres cadenas incrementa su bandera en 1 e incrementa la variable total en 1 también e incrementa j , cuando el valor total variable llega a tres, hemos visto al menos tres suficientes que pertenecen a las tres cadenas diferentes, ahora tiene una ventana entre i y j, el valor mínimo de la matriz lcp en esta ventana es la subcadena común más larga que esos basta con compartir en común, en este caso, incrementa la variable i not j y disminuye el indicador de la cadena a la que apuntaba en uno, si el indicador cae a cero en total también. Tome el valor máximo sobre todos los eventos del segundo tipo (cuando el total llegó a 3), esa es su respuesta. Esta solución se puede generalizar a cadenas X no solo a tres.
Cómo encontrar la subcadena común más larga de tres o más cadenas usando una matriz de sufijos
Related Content
¿Qué debo hacer si tengo dificultades con la programación dinámica en SPOJ?
¿Cómo se puede encontrar la complejidad del tiempo para el recorrido DFS?
¿Cómo podría seleccionar aleatoriamente los bordes en un gráfico para conectar cada nodo [C]?
¿Cómo determinan el nivel de dificultad del sudoku mientras diseñan?
More Interesting
¿Dónde es útil el conocimiento de las estructuras de datos en Swift?
¿Cuáles son algunas aplicaciones prácticas del sistema binario?
¿Cuál es una manera simple de implementar la paginación en una matriz en Javascript?
¿Cómo se puede usar la IA para ayudar a los reclutadores en la toma de decisiones?
¿Por qué estudiamos diferentes algoritmos para la misma tarea?
¿Son los gráficos la mejor estructura de datos para representar circuitos? ¿Hay algo mejor?
¿Son los algoritmos de los programas de computadora, o consisten en algoritmos, o ambos?