Open In App

# Minimum characters that are to be inserted such that no three consecutive characters are same

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:
Explanation: “aabbdbcc” is the modified string.

Input: str = “geeksforgeeks”
Output:
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 ``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

 ``

Output

`1`

Time Complexity: O(N), Traversing over the string of size N.
Auxiliary Space: O(1)