Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Minimum number of insertions in given String to remove adjacent duplicates

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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 <iostream>
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




<script>
// Javascript program for the above approach
 
// Function to find the minimum
// number of additions such that
// no two elements are the same
function minAdditions(str)
{
 
    // Storing length of the string
    let len = str.length;
 
    // Variable to store
    // the number of steps needed
    let min_steps = 0;
 
    let 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
 
let str = "RRG";
document.write(minAdditions(str))
 
// This code is contributed by gfgking.
</script>

 
 

Output

1

 

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

 


My Personal Notes arrow_drop_up
Last Updated : 21 Jan, 2022
Like Article
Save Article
Related Tutorials