Bonjour,
Je viens de gribouiller un petit algo, qui correspondrait à ton besoin,
enfin si j'ai bien compris.
Reste à l'optimisé. Je l'ai testé un VBA sous Excel avec une recherche sur
deux chaines de 250 carctère chacune et le temps de réponse est très
correct.
Si ce n'est pas ça tant pis, je me serais ammusé 10 minutes.
Bonne journée,
Thomas
Public Function CommonSubString(Str1 As String, Str2 As String) As String
Dim StrToFind As String
Dim strMax As String
Dim i As Long
Dim j As Long
'Parcours de toutes les combinaisons de caractères de la chaine 2
For i = 1 To Len(Str2)
For j = 1 To Len(Str2) - i
'Constitution de combinaison de caractères à vérifier dans la
chaine 1
StrToFind = Mid(Str2, i, j)
'Si la chaine recherchée est présente dans la chaine 1
If InStr(Str1, StrToFind) > 0 Then
'On vérifie qu'aucune chaine plus grande n'a été trouvé
If Len(StrToFind) > Len(strMax) Then
'Identification de la chaine trouvée comme étant la plus
grande
strMax = StrToFind
End If
End If
Next
Next
CommonSubString = strMax
End Function
"Jean-Francois Ortolo" <ortolo.jeanfrancois.no_spam@free.fr.invalid> a écrit
dans le message de news: 46efac6b$0$22552$426a34cc@news.free.fr...
Bonjour
Je cherche à trouver un algorithme ( le plus rapide ), qui, étant donné
deux chaînes de caractères ( ce sont des chiffres ), pourra calculer la
plus longue commune subséquence de de ces deux chaînes.
Une subséquence d'une chaîne de caractères, est une chaîne de
caractères, qui est égale à la chaîne initiale, dont on a retiré 0 ou plus
de caractères, à n'importe quel endroit de la chaîne.
Il se peut, que deux caractères d'une chaîne initiale ou plus, soient
égaux. Evidemment, les caractères ne sont pas triés alphabétiquement, mais
une subséquence respecte l'ordre initial des caractères.
Les deux chaînes de caractères initiales, peuvent être de longueur
différentes ( c'est un détail, je pourrais rendre les longueurs identiques
en ajoutant des caractères à l'une des deux chaînes ), et les longueurs de
ces deux chaînes, sont peu élevées ( de l'ordre de 10 caractères au
maximum, et 1 caractère au minimum. )
Dans le livre que j'ai 'Handbook od Algorithms and Data Structures' de
Gonnet, il y a plusieurs indications de précédents, comme par exemple:
Myers, 1986
Mais ce livre ne donne pas de résolution directe du problème.
Merci de votre aide.
Bien à vous.
Amicalement.
Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com