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)

My Personal Notes arrow_drop_up