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