- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Edit Distance in C++
Suppose we have two words word1 and word2, we have to find the minimum number of operations required to concert from word1 to word2. The operations can be of three types, these are insert a character, delete a character and replace a character. So if the input strings are “evaluate” and “fluctuate”, then the result will be 5.
To solve this, we will follow these steps −
n := size of w1, m := size of w2,
create an array dp of size n + 1
for i in range 0 to n
dp[i] := new array of size m + 1
for j in range 0 to m −
dp[i, j] := 0
if i = 0, then dp[i,j] = j
otherwise when j = 0, then dp[i, j] := i
w1 := blank space and concatenate w1, w2 := blank space and concatenate w2
for i in range 1 to n
for j in range 1 to m
if w1[i] is not w2[j], then dp[i, j] := 1 + min of dp[i – 1, j], dp[i, j - 1], dp[i – 1, j – 1]
otherwise dp[i, j] := dp[i – 1, j – 1]
return dp[n, m]
Example
Let us see the following implementation to get better understanding −
#include <bits/stdc++.h> using namespace std; class Solution { public: int minDistance(string w1, string w2) { int n = w1.size(); int m =w2.size(); int** dp = new int*[n+1]; for(int i =0;i<=n;i++){ dp[i] = new int[m+1]; for(int j=0;j<=m;j++){ dp[i][j]=0; if(i==0)dp[i][j]=j; else if(j==0)dp[i][j] = i; } } w1 = " " + w1; w2 = " " + w2; for(int i =1;i<=n;i++){ for(int j = 1;j<=m;j++){ if(w1[i] !=w2[j]){ dp[i][j] = 1+min({dp[i-1][j],dp[i][j-1],dp[i1][j-1]}); } else { dp[i][j] = dp[i-1][j-1]; } } } return dp[n][m]; } }; main(){ Solution ob; cout << (ob.minDistance("fluctuate", "evaluate")); }
Input
"fluctuate" "evaluate"
Output
5
- Related Articles
- One Edit Distance in C++
- Edit Distance
- Program to find the minimum edit distance between two strings in C++
- Check if edit distance between two strings is one in Python
- Program to check two strings are 0 or 1 edit distance away or not in Python
- How to Edit, Compile, and Execute a C++ Program?
- How to edit a comboBox in JavaFX?
- Delete and Edit items in Tkinter TreeView
- How to edit old designs in Canva?
- Count paths with distance equal to Manhattan distance in C++
- Total Hamming Distance in C++
- How to create circler edit text in android?
- Shared Preferences - Save, edit, retrieve, delete in Kotlin?
- How to edit a Listbox item in Tkinter?
- Shortest Word Distance II in C++
