Minimum number of deletions and insertions to transform one string into another using C++.



Description

Given two strings str1 and str2 of size m and n respectively. The task is to delete and insert a minimum number of characters from/in str1 so as to transform it into str2.

Str1 = β€œtutorialspoint”
Str2 = β€œtutorials”
To transform str1 to str2 we have to delete five characters i.e.
β€œpoint” from str1.

Algorithm

1. Find longest common subsequence of str1 and str2. Let’s call it as β€œlcsSize”
2. Number of characters to be deleted = (length of str1 - lcsSize)
3. Number of characters to be inserted = (length of str2 - lcsSize)

Example

#include <iostream>
#include <algorithm>
using namespace std;
int lcs(string s1, string s2, int m, int n){
   if (m == 0 || n == 0) {
      return 0;
   }
   if (s1[m - 1] == s2[n - 1]) {
      return 1 + lcs(s1, s2, m - 1, n - 1);
   } else {
      return max(lcs(s1, s2, m, n - 1), lcs(s1, s2, m - 1, n));
   }
}
void minDeletionAndInsertion(string s1, string s2){
   int m = s1.size();
   int n = s2.size();
   int lcsSize = lcs(s1, s2, m, n);
   cout << "Min deletion = " << (m - lcsSize) << endl;
   cout << "Min insertion = " << (n - lcsSize) << endl;
}
int main(){
   minDeletionAndInsertion("tutorialspoint", "tutorials");
   return 0;
}

Output

When you compile and execute the above program. It generates the following output βˆ’

Min deletion = 5
Min insertion = 0
Updated on: 2019-10-31T06:33:35+05:30

407 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements