Minimum number of insertions in given String to remove adjacent duplicates

Last Updated : 21 Jan, 2022

Given a string str of size N, the task is to find the minimum number of additions in the string such that no two consecutive elements are the same.

Examples:

Input: str=”rrg”
Output: 1
Explanation: Add an element between two r’s

Input: str=”rrrrr”
Output: 4

Approach: The above problem can be solved using the below given steps:

1. Declare variable min_steps and initialise it by 0.
2. Traverse the string using a for-loop from i=0 to i<N.
3. Check if the current character is the same as the character before it.
4. If yes, then increment min_steps by 1.
5. Else, continue the loop.
6. Print min_steps as the answer.

Below is the implementation of the above approach:

C++

 `// C++ program for the above approach`   `#include ` `using` `namespace` `std;`   `// Function to find the minimum` `// number of additions such that` `// no two elements are the same` `int` `minAdditions(string str)` `{` `    ``// Storing length of the string` `    ``int` `len = str.size();`   `    ``// Variable to store` `    ``// the number of steps needed` `    ``int` `min_steps = 0;`   `    ``int` `i;`   `    ``// For loop to check` `    ``// all colours in the string` `    ``for` `(i = 1; i < len; i++) {` `        ``if` `(str[i] == str[i - 1])` `            ``min_steps++;` `    ``}`   `    ``// Returning the number of additions` `    ``return` `min_steps;` `}`   `// Driver Code` `int` `main()` `{` `    ``string str = ``"RRG"``;` `    ``cout << minAdditions(str);` `    ``return` `0;` `}`

Java

 `// Java program for above approach` `import` `java.util.*;` `public` `class` `GFG {`   `  ``// Function to find the minimum` `  ``// number of additions such that` `  ``// no two elements are the same` `  ``static` `int` `minAdditions(String str)` `  ``{`   `    ``// Storing length of the string` `    ``int` `len = str.length();`   `    ``// Variable to store` `    ``// the number of steps needed` `    ``int` `min_steps = ``0``;`   `    ``int` `i;`   `    ``// For loop to check` `    ``// all colours in the string` `    ``for` `(i = ``1``; i < len; i++) {` `      ``if` `(str.charAt(i) == str.charAt(i - ``1``))` `        ``min_steps++;` `    ``}`   `    ``// Returning the number of additions` `    ``return` `min_steps;` `  ``}`   `  ``// Driver Code` `  ``public` `static` `void` `main(String args[])` `  ``{` `    ``String str = ``"RRG"``;`   `    ``System.out.println(minAdditions(str));` `  ``}` `}`   `// This code is contributed by Samim Hossain Mondal.`

Python3

 `# python3 program for the above approach`   `# Function to find the minimum` `# number of additions such that` `# no two elements are the same` `def` `minAdditions(``str``):`   `    ``# Storing length of the string` `    ``le ``=` `len``(``str``)`   `    ``# Variable to store` `    ``# the number of steps needed` `    ``min_steps ``=` `0`   `    ``# For loop to check` `    ``# all colours in the string` `    ``for` `i ``in` `range``(``1``, le):` `        ``if` `(``str``[i] ``=``=` `str``[i ``-` `1``]):` `            ``min_steps ``+``=` `1`   `    ``# Returning the number of additions` `    ``return` `min_steps`     `# Driver Code` `if` `__name__ ``=``=` `"__main__"``:`   `    ``str` `=` `"RRG"` `    ``print``(minAdditions(``str``))`   `# This code is contributed by rakeshsahni`

C#

 `// C# program for the above approach` `using` `System;` `class` `GFG {`   `  ``// Function to find the minimum` `  ``// number of additions such that` `  ``// no two elements are the same` `  ``static` `int` `minAdditions(``string` `str)` `  ``{`   `    ``// Storing length of the string` `    ``int` `len = str.Length;`   `    ``// Variable to store` `    ``// the number of steps needed` `    ``int` `min_steps = 0;`   `    ``int` `i;`   `    ``// For loop to check` `    ``// all colours in the string` `    ``for` `(i = 1; i < len; i++) {` `      ``if` `(str[i] == str[i - 1])` `        ``min_steps++;` `    ``}`   `    ``// Returning the number of additions` `    ``return` `min_steps;` `  ``}`   `  ``// Driver Code` `  ``public` `static` `void` `Main()` `  ``{` `    ``string` `str = ``"RRG"``;` `    ``Console.Write(minAdditions(str));` `  ``}` `}`   `// This code is contributed by ukasp.`

Javascript

 ``

Output

`1`

Time Complexity: O(N)
Auxiliary Space: O(1)

Previous
Next