Given a string str and the task is to modify the string such that no three consecutive characters are the same. In a single operation, any character can be inserted at any position in the string. Find the minimum number of such operations required.
Examples:
Input : str = “aabbbcc”
Output: 1
Explanation: “aabbdbcc” is the modified string.Input: str = “neveropen”
Output: 0
Explanation: There are no same consecutive characters
Approach:
The idea is to insert the character after the second character to minimize the operations.
Follow the steps below to solve the problem:
- Loop over the string and check at ith index if str[i] == str[i + 1] and str[i] == str[i + 2]
- If this condition is true then increment the count.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the count of characters // that are to be inserted in str such that no // three consecutive characters are same int getCount(string str, int n) { // To store the count of // operations required int cnt = 0; int i = 0; while (i < n - 2) { // A character needs to be // inserted after str[i + 1] if (str[i] == str[i + 1] && str[i] == str[i + 2]) { cnt++; i = i + 2; } // Current three consecutive // characters are not same else i++; } return cnt; } // Driver code int main() { string str = "aabbbcc" ; int n = str.length(); cout << getCount(str, n); return 0; } |
Java
// Java implementation of the approach import java.util.*; class GFG { // Function to return the count of characters // that are to be inserted in str such that no // three consecutive characters are same static int getCount( char [] str, int n) { // To store the count of // operations required int cnt = 0 ; int i = 0 ; while (i < n - 2 ) { // A character needs to be // inserted after str[i + 1] if (str[i] == str[i + 1 ] && str[i] == str[i + 2 ]) { cnt++; i = i + 2 ; } // Current three consecutive // characters are not same else { i++; } } return cnt; } // Driver code static public void main(String[] arg) { String str = "aabbbcc" ; int n = str.length(); System.out.println(getCount(str.toCharArray(), n)); } } // This code is contributed by PrinciRaj1992 |
Python3
# Python3 implementation of the approach # Function to return the count of characters # that are to be inserted in str1 such that no # three consecutive characters are same def getCount(str1, n): # To store the count of # operations required cnt = 0 i = 0 while (i < n - 2 ): # A character needs to be # inserted after str1[i + 1] if (str1[i] = = str1[i + 1 ] and str1[i] = = str1[i + 2 ]): cnt + = 1 i = i + 2 # Current three consecutive # characters are not same else : i + = 1 return cnt # Driver code str1 = "aabbbcc" n = len (str1) print (getCount(str1, n)) # This code is contributed by Mohit Kumar |
C#
// C# implementation of the above approach using System; class GFG { // Function to return the count of characters // that are to be inserted in str such that no // three consecutive characters are same static int getCount( string str, int n) { // To store the count of // operations required int cnt = 0; int i = 0; while (i < n - 2) { // A character needs to be // inserted after str[i + 1] if (str[i] == str[i + 1] && str[i] == str[i + 2]) { cnt++; i = i + 2; } // Current three consecutive // characters are not same else { i++; } } return cnt; } // Driver code static public void Main() { string str = "aabbbcc" ; int n = str.Length; Console.WriteLine(getCount(str, n)); } } // This code is contributed by AnkitRai01 |
Javascript
<script> // JavaScript implementation of the above approach // Function to return the count of characters // that are to be inserted in str such that no // three consecutive characters are same function getCount(str, n) { // To store the count of // operations required var cnt = 0; var i = 0; while (i < n - 2) { // A character needs to be // inserted after str[i + 1] if (str[i] === str[i + 1] && str[i] === str[i + 2]) { cnt++; i = i + 2; } // Current three consecutive // characters are not same else { i++; } } return cnt; } // Driver code var str = "aabbbcc" ; var n = str.length; document.write(getCount(str, n)); </script> |
1
Time Complexity: O(N), Traversing over the string of size N.
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!