From 9840c53d1ed6d70d9b881f1564c7c357da220738 Mon Sep 17 00:00:00 2001 From: Kumar Laxmikant Date: Fri, 4 Oct 2024 18:51:36 +0200 Subject: [PATCH] Pushing edit distance program in Java --- Java/Dynamic-Programming/edit_distance.java | 39 +++++++++++++++++++++ README.md | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 Java/Dynamic-Programming/edit_distance.java diff --git a/Java/Dynamic-Programming/edit_distance.java b/Java/Dynamic-Programming/edit_distance.java new file mode 100644 index 000000000..fa093972c --- /dev/null +++ b/Java/Dynamic-Programming/edit_distance.java @@ -0,0 +1,39 @@ +public class GfG { + // A Naive recursive Java program to find minimum number + // of operations to convert s1 to s2 + public static int editDistRec(String s1, String s2, int m, int n) { + // If first string is empty, the only option is to + // insert all characters of second string into first + if (m == 0) return n; + + // If second string is empty, the only option is to + // remove all characters of first string + if (n == 0) return m; + + // If last characters of two strings are same, nothing + // much to do. Get the count for + // remaining strings. + if (s1.charAt(m - 1) == s2.charAt(n - 1)) + return editDistRec(s1, s2, m - 1, n - 1); + + // If last characters are not same, consider all three + // operations on last character of first string, + // recursively compute minimum cost for all three + // operations and take minimum of three values. + return 1 + Math.min(Math.min(editDistRec(s1, s2, m, n - 1), // Insert + editDistRec(s1, s2, m - 1, n)), // Remove + editDistRec(s1, s2, m - 1, n - 1)); // Replace + } + + // Wrapper function to initiate the recursive calculation + public static int editDist(String s1, String s2) { + return editDistRec(s1, s2, s1.length(), s2.length()); + } + + // Driver code + public static void main(String[] args) { + String s1 = "GEEXSFRGEEKKS"; + String s2 = "GEEKSFORGEEKS"; + System.out.println(editDist(s1, s2)); + } +} \ No newline at end of file diff --git a/README.md b/README.md index 2c58438b1..f322a25e1 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ | --- | ----------------------------------------------------------------------------------- | ------------------------------ | | 1. | 0/1 Knapsack | [C](https://github.com/Kumar-laxmi/Algorithms/blob/main/C/Dynamic-Programming/01_knapsack.c), [C++](https://github.com/Kumar-laxmi/Algorithms/blob/main/C%2B%2B/Dynamic-Programming/01_knapsack.cpp), [Java](https://github.com/Kumar-laxmi/Algorithms/blob/main/Java/Dynamic-Programming/_01_knapsack.java), [Python](https://github.com/Kumar-laxmi/Algorithms/blob/main/Python/Dynamic-Programming/01_knapsack.py) | | 2. | Coin change problem | [C](https://github.com/Kumar-laxmi/Algorithms/blob/main/C/Dynamic-Programming/coinchange.c), [C++](https://github.com/Kumar-laxmi/Algorithms/blob/main/C%2B%2B/Dynamic-Programming/coinchange.cpp), [Java](https://github.com/Kumar-laxmi/Algorithms/blob/main/Java/Dynamic-Programming/coinchange.java), [Python](https://github.com/Kumar-laxmi/Algorithms/blob/main/Python/Dynamic-Programming/coinchange.py) | -| 3. | Edit Distance | [C](https://github.com/Kumar-laxmi/Algorithms/blob/main/C/Dynamic-Programming/edit_distance.c), [C++](https://github.com/Kumar-laxmi/Algorithms/blob/main/C%2B%2B/Dynamic-Programming/edit_distance.cpp), [Python](https://github.com/Kumar-laxmi/Algorithms/blob/main/Python/Dynamic-Programming/edit_distance.py) | +| 3. | Edit Distance | [C](https://github.com/Kumar-laxmi/Algorithms/blob/main/C/Dynamic-Programming/edit_distance.c), [C++](https://github.com/Kumar-laxmi/Algorithms/blob/main/C%2B%2B/Dynamic-Programming/edit_distance.cpp), [Java](https://github.com/Kumar-laxmi/Algorithms/blob/main/Java/Dynamic-Programming/edit_distance.java), [Python](https://github.com/Kumar-laxmi/Algorithms/blob/main/Python/Dynamic-Programming/edit_distance.py) | | 4. | Fibonacci Number | [C](https://github.com/Kumar-laxmi/Algorithms/blob/main/C/Dynamic-Programming/Fibonacci_Number.c), [C++](https://github.com/Kumar-laxmi/Algorithms/blob/main/C%2B%2B/Dynamic-Programming/Fibonacci_Number.cpp), [Java](https://github.com/Kumar-laxmi/Algorithms/blob/main/Java/Dynamic-Programming/Fibonacci_Number.java), [Python](https://github.com/Kumar-laxmi/Algorithms/blob/main/Python/Dynamic-Programming/Fibonacci_Number.py) | | 5. | Hierholzer Algorithm | [C](https://github.com/Kumar-laxmi/Algorithms/blob/main/C/Graphs/Hierholzer_Algorithm.c), [C++](https://github.com/Kumar-laxmi/Algorithms/blob/main/C%2B%2B/Graphs/Hierholzer_Algorithm.cpp), [Java](https://github.com/Kumar-laxmi/Algorithms/blob/main/Java/Graphs/Hierholzer_Algorithm.java), [Python](https://github.com/Kumar-laxmi/Algorithms/blob/main/Python/Graphs/Hierholzer_Algorithm.py) | | 6. | Longest Common Subsequence | [C](https://github.com/Kumar-laxmi/Algorithms/blob/main/C/Dynamic-Programming/Longest_Common_Subsequence.c), [C++](https://github.com/Kumar-laxmi/Algorithms/blob/main/C%2B%2B/Dynamic-Programming/LongestCommonSubsequence.cpp), [Java](https://github.com/Kumar-laxmi/Algorithms/blob/main/Java/Dynamic-Programming/LongestCommonSubsequence.java), [Python](https://github.com/Kumar-laxmi/Algorithms/blob/main/Python/Dynamic-Programming/Longest_Common_Subsequence.py) |