algorytm.org

Implementacja w Java



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Odległość Levenshteina (odległość edycyjna) - Implementacja w Java
Ocena użytkownikóww: *****  / 2
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 06 lutego 2009 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Levenshtein.java:
// Odleglosc Levenshteina (odleglosc edycyjna)
// www.algorytm.org
// (c) 2009 Tomasz Lubinski

public class Levenshtein {


	/**
	 * Odleglosc Levenshteina (odleglosc edycyjna)
	 */
	private static int levenshtein(String s, String t)
	{
	   int i, j, m, n, cost;
	   int d[][];

	   m = s.length();
	   n = t.length();
	   
	   d = new int[m+1][n+1];

	   for (i=0; i<=m; i++)
	      d[i][0] = i;
	   for (j=1; j<=n; j++)
	      d[0][j] = j;

	   for (i=1; i<=m; i++)
	   {
	      for (j=1; j<=n; j++)
	      {
	           if (s.charAt(i-1) == t.charAt(j-1))
	              cost = 0;
	           else
	              cost = 1;

	           d[i][j] = Math.min(d[i-1][j] + 1,         /* remove */
	                        Math.min(d[i][j-1] + 1,      /* insert */
	                             d[i-1][j-1] + cost));   /* change */
	      }
	   }

	   return d[m][n];
	}
	
	/**
	 * Odleglosc Levenshteina (odleglosc edycyjna)
	 */
	public static void main(String[] args) {
	    String s, t;

	    System.out.println("Podaj pierwszy ciag");
	    s = Console.readString();

	    System.out.println("Podaj drug ciag");
	    t = Console.readString();

	    System.out.println("Odleglosc Levenshteina wynosi: " + levenshtein(s, t));
	}

}
Dodaj komentarz