Minimum number of insertions in given String to remove adjacent duplicates
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’sInput: str=”rrrrr”
Output: 4
Approach: The above problem can be solved using the below given steps:
- Declare variable min_steps and initialise it by 0.
- Traverse the string using a for-loop from i=0 to i<N.
- Check if the current character is the same as the character before it.
- If yes, then increment min_steps by 1.
- Else, continue the loop.
- 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)
Please Login to comment...