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 sameint 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 codeint main(){ string str = "aabbbcc"; int n = str.length(); cout << getCount(str, n); return 0;} |
Java
// Java implementation of the approachimport 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 samedef 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 codestr1 = "aabbbcc"n = len(str1)print(getCount(str1, n))# This code is contributed by Mohit Kumar |
C#
// C# implementation of the above approachusing 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!
