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 = “geeksforgeeks”
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++ 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 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 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# 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 |
<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)