Por favor, ahora que he vuelto a escribir la pregunta, y antes de que sufra de fast-gun answers o cierre prematuro por eager editors déjeme señalar que este no es un duplicado de this question . Sé cómo eliminar duplicados de una matriz.La mejor manera de reducir secuencias en una matriz de cadenas
Esta pregunta trata de eliminar las secuencias de una matriz, no duplicados en el sentido estricto.
Considere esta secuencia de elementos en una matriz;
[0] a
[1] a
[2] b
[3] c
[4] c
[5] a
[6] c
[7] d
[8] c
[9] d
En este ejemplo quiero obtener la siguiente ...
[0] a
[1] b
[2] c
[3] a
[4] c
[5] d
Aviso que duplican elementos se retienen pero que las secuencias de un mismo elemento se han reducido a una única instancia de ese elemento.
Además, observe que cuando dos líneas se repiten, deben reducirse a un conjunto (de dos líneas).
[0] c
[1] d
[2] c
[3] d
... se reduce a ...
[0] c
[1] d
estoy de codificación en C#, pero algoritmos en cualquier idioma apreciado.
bien, parece que lo más difícil aquí es averiguar cómo las cosas deben trabajar. No he visto esto antes, así que lo preguntaré. Si tuviera líneas de la forma baabbaab, ¿le gustaría reducir primero a baab y luego a bab, o simplemente detenerse en Baab, ya que se comparó con un bloque eliminado ya? –
¡Otra buena pregunta! En mi caso, me gustaría que ababab redujera a abab pero no más. –
También tengo curiosidad acerca de la aclaración de la pregunta. Hasta ahora, parece que tenemos 3 ejemplos con una regla general ambigua de eliminar secuencias (de subcadenas repetidas). ¿Podría dar una aplicación de este código, o tratar de explicar más detalladamente cómo decidir los casos de frontera como cbaacba (a)? – Tyler