La idea principal para usar la búsqueda binaria en este problema es, si tiene una subcadena común de cierta longitud ‘n’, entonces definitivamente podemos encontrar una subcadena común de longitud menor que ‘n’.
Por lo tanto, encontrar la subcadena común más larga implica los siguientes pasos:
hash1 [] = hash de la cadena 1
hash2 [] = hash de la cadena 2
lo = 0
hi = longitud de la cadena más corta + 1
mid = (lo + hi) / 2
if (subcadena común de longitud == mid):
lo = medio
más
hola = medio
- ¿Necesito matemáticas para aprender estructuras de datos y algoritmos?
- ¿Cuál es el mejor y más fácil algoritmo de búsqueda?
- ¿Cuál es el algoritmo más adecuado para la agrupación en una red social?
- ¿Cómo funcionan los algoritmos y la estructura de datos cuando procesamos cualquier solicitud en un sitio web?
- ¿Cómo debo diseñar un buen algoritmo de disminución de tiempo?
El método ingenuo para encontrar una subcadena común se ejecutará en O (n ^ 2), pero puede hacerlo en O (nlogn). Almacene los hashes de cada subcadena de longitud ‘n’ de una cadena en un conjunto STL, luego calcule el hash para cada subcadena de longitud ‘n’ para la otra cadena y búsquelo en el conjunto. Entonces, la complejidad general de esto será O (n * logn ^ 2).
Puede probar este problema Una historia con cadenas y verificar algunas soluciones ACed si tiene problemas para implementar.