1 pièce(s) jointe(s)
Trouver le maximum de substrings communes à deux strings, sans répétition
Bonjour :)
Je chercher à faire une fonction f(str1, str2, minLength) qui me retournerait toutes les sous strings communes à ces deux strings, d'une longueur minimum de minLength, et ce, en éliminant les répétitions. Exemple, str1 = "bonbon" et str2 = "bonheur", il n'y aurait qu'une substring en commun, "bon".
Pour penser le problème d'une manière un peu plus abstraite (même si je n'ai pas encore la solution) je pense utiliser un tableau d'équivalence dont voici l'exemple, pour str1 = "abcdbcde" et str2 = "abcdeab" :
Pièce jointe 594045
Et donc, mon problème consiste en fait "simplement" à trouver l'ensemble des points violets (i,j) tels que :
str1[i] = str2[j] et (i,j) > 1
il n'y ait qu'un seul point violet par axe
il y ait le maximum de cases vertes qui deviennent violettes
Et là c'est le blanc 8O J'ai essayé en faisant des sommes par axes, des trucs, des machins, dans tous les sens, même un semblant d'arbre, mais j'aimerais éviter la solution des arbres et je suis sûr qu'il y a un moyen plus souple de résoudre cela, mais vraiment, je n'arrive pas à me représenter la solution dans ma tête..
Quelqu'un peut-il m'aider ?