Created
April 6, 2020 07:43
-
-
Save dsapandora/2e006415e7991080d8dd2a2a31f2944e to your computer and use it in GitHub Desktop.
edit distancw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // A Dynamic Programming based C++ program to find minimum | |
| // number operations to convert str1 to str2 | |
| #include <bits/stdc++.h> | |
| using namespace std; | |
| // Utility function to find the minimum of three numbers | |
| int min(int x, int y, int z) | |
| { | |
| return min(min(x, y), z); | |
| } | |
| int editDistDP(string str1, string str2, int m, int n) | |
| { | |
| // Create a table to store results of subproblems | |
| int dp[m + 1][n + 1]; | |
| // Fill d[][] in bottom up manner | |
| for (int i = 0; i <= m; i++) { | |
| for (int j = 0; j <= n; j++) { | |
| // If first string is empty, only option is to | |
| // insert all characters of second string | |
| if (i == 0) | |
| dp[i][j] = j; // Min. operations = j | |
| // If second string is empty, only option is to | |
| // remove all characters of second string | |
| else if (j == 0) | |
| dp[i][j] = i; // Min. operations = i | |
| // If last characters are same, ignore last char | |
| // and recur for remaining string | |
| else if (str1[i - 1] == str2[j - 1]) | |
| dp[i][j] = dp[i - 1][j - 1]; | |
| // If the last character is different, consider all | |
| // possibilities and find the minimum | |
| else | |
| dp[i][j] = 1 + min(dp[i][j - 1], // Insert | |
| dp[i - 1][j], // Remove | |
| dp[i - 1][j - 1]); // Replace | |
| } | |
| } | |
| return dp[m][n]; | |
| } | |
| // Driver program | |
| int main() | |
| { | |
| // your code goes here | |
| string str1 = "sunday"; | |
| string str2 = "saturday"; | |
| cout << editDistDP(str1, str2, str1.length(), str2.length()); | |
| return 0; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # A Dynamic Programming based Python program for edit | |
| # distance problem | |
| def editDistDP(str1, str2, m, n): | |
| # Create a table to store results of subproblems | |
| dp = [[0 for x in range(n + 1)] for x in range(m + 1)] | |
| # Fill d[][] in bottom up manner | |
| for i in range(m + 1): | |
| for j in range(n + 1): | |
| # If first string is empty, only option is to | |
| # insert all characters of second string | |
| if i == 0: | |
| dp[i][j] = j # Min. operations = j | |
| # If second string is empty, only option is to | |
| # remove all characters of second string | |
| elif j == 0: | |
| dp[i][j] = i # Min. operations = i | |
| # If last characters are same, ignore last char | |
| # and recur for remaining string | |
| elif str1[i-1] == str2[j-1]: | |
| dp[i][j] = dp[i-1][j-1] | |
| # If last character are different, consider all | |
| # possibilities and find minimum | |
| else: | |
| dp[i][j] = 1 + min(dp[i][j-1], # Insert | |
| dp[i-1][j], # Remove | |
| dp[i-1][j-1]) # Replace | |
| return dp[m][n] | |
| # Driver program | |
| str1 = "sunday" | |
| str2 = "saturday" | |
| print(editDistDP(str1, str2, len(str1), len(str2))) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment