Dado un conjunto de cadenas, por ejemplo:¿Cómo puedo detectar subcadenas comunes en una lista de cadenas
EFgreen
EFgrey
EntireS1
EntireS2
J27RedP1
J27GreenP1
J27RedP2
J27GreenP2
JournalP1Black
JournalP1Blue
JournalP1Green
JournalP1Red
JournalP2Black
JournalP2Blue
JournalP2Green
Quiero ser capaz de detectar que se trata de tres conjuntos de archivos:
- entires [1,2]
- J27 [rojo, verde] P [1,2]
- JournalP [1,2] [rojo, verde, azul]
¿Hay alguna forma conocida de abordar este problema, cualquier documento publicado que pueda leer al respecto?
El enfoque que estoy considerando es para cada cadena de todas las demás cadenas y encontrar los caracteres comunes y donde están los diferentes caracteres, tratando de encontrar conjuntos de cadenas que tienen más en común, pero me temo que esto no es muy eficiente y puede dar falsos positivos.
Tenga en cuenta que esto no es lo mismo que 'How do I detect groups of common strings in filenames' porque eso supone que una cadena siempre tendrá una serie de dígitos a continuación.
Lo es la regla que determina que [J27Red, Diario] P27 [Rojo, Verde] no es un conjunto? ¿Está dando prioridad a las coincidencias que comienzan antes en la cadena? – djna
Sea más específico en cuanto a cómo quiere definir sus conjuntos. Por ejemplo, además del comentario anterior, lo que determina que "J27 [Rojo, Verde] P [1,2]" es un conjunto y [ A-Z] [A-Z] [A-Z] [A-Z] [A-Z] [A-Z] [0-9] o algo así no lo es. – DVK
Al asumir que todos los archivos en un _ inicio familiar determinado _ con una secuencia común, reducimos en gran medida la complejidad del problema. ¿Es esto una suposición que deseamos usar efectivamente o solo una coincidencia que el conjunto de ejemplo es? – mjv