¿Qué es un comando de shell para encontrar la subcadena común más larga de dos cadenas en Unix? como: Foo abcdefghi ' 'abjklmdefnop' impresiones: def¿Qué es un comando de shell para encontrar la subcadena común más larga de dos cadenas en Unix?
Respuesta
Esto se conoce como el problema subsecuencia común más larga y hay algunos grandes algoritmos para ello. Consulte la solución de programación dinámica (si la busca en Google, encontrará muchas implementaciones). Si realmente quiere entender esto en un nivel algorítmico, echa un vistazo a esta conferencia del MIT,
Gracias por este bonito enlace. Pero por ahora me temo que solo necesito una solución de línea de comandos estándar rápida y no me importaría si se implementa con O (n^5) complejidad. – user1081596
@ user1081596: ¿De qué tamaño serán sus entradas? – Daenyth
no estoy seguro de si hay un solo comando que hace el trabajo para usted, pero la siguiente escritura del golpe debe hacer eso.
#!/bin/bash
word1="$1"
word2="$2"
if [ ${#word1} -lt ${#word2} ]
then
word1="$2"
word2="$1"
fi
for ((i=${#word2}; i>0; i--)); do
for ((j=0; j<=${#word2}-i; j++)); do
if [[ $word1 =~ ${word2:j:i} ]]
then
echo ${word2:j:i}
exit
fi
done
done
Guardar todo lo anterior como un archivo substr.sh hacer chmod + x substr.sh
pranithk @ ~
09:24:32 :) $ ./substr.sh 'abcdefghi' 'abcdeghi'
abcde
pranithk @ ~
09:24:33 :) $ ./substr.sh 'abcdefghi' 'abjklmdefnop'
def
- 1. Subcadena común más larga de más de dos cadenas - Python
- 2. Cómo encontrar la subcadena común más larga usando C++
- 3. ¿Cómo encontrar la subcadena común más larga usando árboles?
- 4. problema de subcadena común más larga
- 5. ¿Cómo puedo encontrar la subcadena común más grande entre dos cadenas en PHP?
- 6. Encontrar la subcadena común más larga en un gran conjunto de datos
- 7. Buscar la subcadena común más larga de varias cadenas utilizando factor oracle mejorado con matriz LRS
- 8. Algoritmo para encontrar una subcadena común en N series
- 9. ¿Cómo acelerar el cálculo de la longitud de la subcadena común más larga?
- 10. Subsección palindrómica común más larga
- 11. Comando Unix para encontrar cadenas de intersecciones o valores atípicos?
- 12. La subsecuencia más larga común
- 13. Seleccionar TimeRange común más larga
- 14. La subsecuencia común más larga para múltiples secuencias
- 15. subcadena más larga que aparece n veces
- 16. Encontrar cadena común en matriz de cadenas (rubí)
- 17. ¿Cómo determino la porción similar más larga de varias cadenas?
- 18. divisor común más grande euclidiano para más de dos números
- 19. ¿Cómo encontrar líneas que contengan más de un solo espacio en blanco entre cadenas en Unix?
- 20. biblioteca de algoritmos de subsecuencia común más larga eficiente?
- 21. Bash Shell - ¿Qué es equivalente al shell DOS F8?
- 22. Encontrar lo que es común en dos matrices
- 23. Diferencia de datos basada en SQL: subsecuencia común más larga
- 24. ¿Qué algoritmo usar para obtener la coincidencia de cadena más larga en dos grandes matrices?
- 25. ¿Cómo encontrar la ruta más larga en un gráfico cíclico entre dos nodos?
- 26. "Evento no encontrado" Error de comando shell en Unix
- 27. prefijo común de cadenas
- 28. Crear un shell UNIX
- 29. expresión regular para los dígitos en Unix encontrar comando
- 30. ¿Cuál es la forma más común de scripts de shell en Clojure?
¿Esta necesidad de ser POSIX? ¿Dirigido a cualquier distribución específica? – Daenyth
es mejor tenerlo funcionando en la mayoría de los linux – user1081596
@ user1081596: Entonces recomiendo implementar esto en Perl, ya que se instalará en cada Linux a menos que el usuario lo haya eliminado. – Daenyth