1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
public class MatchingApproximatif
{
public static void main(String[] args)
{
String modele = "Toiture";
String strAComparer = "Bordure";
boolean resultat = matching(modele, strAComparer, 3);
System.out.println(resultat);
}
static boolean matching(String modele, String strAComparer, int nbErreursPermis)
{
int nbErreursTrouves = 0;
//On teste s'il y a une différence de taille des 2 chaines,
//un caractère de plus ou de moins est une erreur
int diffTailleChaines = modele.length() - strAComparer.length();
nbErreursTrouves += Math.abs(diffTailleChaines);
if (nbErreursTrouves > nbErreursPermis)
return false;
//La différence de taille n'est pas supérieur au nombre d'erreurs permis,
//on compare les chaines caractère par caractère
for (int i = 0; i < modele.length(); i++)
{
if (modele.charAt(i) != strAComparer.charAt(i))
{
nbErreursTrouves++;
if (nbErreursTrouves > nbErreursPermis)
return false;
}
}
return true;
}
} |
Partager