Bonjour,
voici une procédure qui fait cela et qui est rapide
elle renvoie le nombre de caractères en différence entre les 2 chaines
- Code: Tout sélectionner
PROCEDURE Difference2chaines(LOCAL _szSt1 est une chaîne,LOCAL _szSt2 est une chaîne)
// compare le nombre de caractères en différence mais aussi par rapport a leur place
// renvoie le nombre de caractères pas a leur place ou différent
lLongStr1 est un entier
ct est un entier
lLongStr2 est un entier
lReponse est un entier
// variables locale pour traitement des 2 parametres et eviter de les modifier
szStr1 est une chaîne = " "+_szSt1
szStr2 est une chaîne = " "+_szSt2
// recuperation de la taille des 2 parametres envoyés
lLongStr1= Taille(szStr1)
lLongStr2= Taille(szStr2)
// on regarde combien de cracteres sont différents en comprarant la place et le caractere
DMatrix est un tableau de lLongStr1 par lLongStr2 entier
POUR i = 2 A lLongStr1
DMatrix[i, 1] = i-1
POUR j = 2 A lLongStr2
DMatrix[1, j] = j-1
ct = szStr1[[i]] = szStr2[[j]] ? 0 SINON 1
DMatrix[i,j] = Min((DMatrix[i,j-1]+1),( DMatrix[i-1,j]+1),(DMatrix[i-1,j-1]+ct))
FIN
FIN
lReponse = DMatrix[lLongStr1,lLongStr2]
// renvoie de la valeur
RENVOYER lReponse
a tester car j'ai enlever des modifications specifiques au traitment
et voir si plus rapide (pour mes traitement cela n'a pas d'importance)
pour l'utilisation
nb est un entier = Difference2chaines(MachaineNumero1, maChainenumero2)