From 0957f33275b90289009569319fa3c3be48f489c0 Mon Sep 17 00:00:00 2001 From: kv19971 Date: Fri, 29 Sep 2017 00:43:08 +0800 Subject: [PATCH] added levenshtein distance dp implementation --- Dynamic Programming/Levenshtein_distance.java | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Dynamic Programming/Levenshtein_distance.java diff --git a/Dynamic Programming/Levenshtein_distance.java b/Dynamic Programming/Levenshtein_distance.java new file mode 100644 index 00000000..5bff389f --- /dev/null +++ b/Dynamic Programming/Levenshtein_distance.java @@ -0,0 +1,55 @@ +/** + * + * @author Kshitij VERMA (github.com/kv19971) + * LEVENSHTEIN DISTANCE dyamic programming implementation to show the difference between two strings (https://en.wikipedia.org/wiki/Levenshtein_distance) + * + * + */ + +public class Levenshtein_distance{ + private int minimum(int a, int b, int c){ + if(a < b && a < c){ + return a; + }else if(b < a && b < c){ + return b; + }else{ + return c; + } + } + public int calculate_distance(String a, String b){ + len_a = a.length() + 1; + len_b = b.length() + 1; + int [][] distance_mat = new int[len_a][len_b]; + for(int i = 0; i < len_a; i++){ + distance_mat[i][0] = i; + } + for(int j = 0; j < len_b; j++){ + distance_mat[0][j] = j; + } + for(int i = 0; i < len_a; i++){ + for(int j = 0; i < len_b; j++){ + int cost; + if (a.charAt(i) == b.charAt(j)){ + cost = 0; + }else{ + cost = 1; + } + distance_mat[i][j] = minimum(distance_mat[i-1][j], distance_mat[i-1][j-1], distance_mat[i][j-1]) + cost; + + + } + + } + return distance_mat[len_a-1][len_b-1]; + + } + public static void main(String [] args){ + String a = ""; // enter your string here + String b = ""; // enter your string here + + System.out.print("Levenshtein distance between "+a + " and "+b+ " is: "); + System.out.println(calculate_distance(a,b)); + + + } +}