# Minimum number of characters to be removed to make a binary string alternate

Last Updated : 11 Sep, 2023

Given a binary string, the task is to find minimum number of characters to be removed from it so that it becomes alternate. A binary string is alternate if there are no two consecutive 0s or 1s.
Examples :

```Input  : s = "000111"
Output : 4
We need to delete two 0s and
two 1s to make string alternate.

Input  : s = "0000"
Output : 3
We need to delete three characters
to make it alternate.

Input  :  s = "11111"
Output :  4

Input  : s = "01010101"
Output : 0

Input  : s = "101010"
Output : 0  ```

This problem has below simple solution.
We traverse string from left to right and compare current character with next character.

1. If current and next are different then no need to perform deletion.
2. If current and next are same, we need to perform one delete operation to make them alternate.

Below is the implementation of above algorithm.

## C++

 `// C++ program to find minimum number ` `// of characters to be removed to make ` `// a string alternate. ` `#include ` `using` `namespace` `std; ` ` `  `// Returns count of minimum characters to ` `// be removed to make s alternate. ` `void` `countToMake0lternate(``const` `string& s) ` `{ ` `    ``int` `result = 0; ` ` `  `    ``for` `(``int` `i = 0; i < (s.length() - 1); i++) ` ` `  `        ``// if two alternating characters ` `        ``// of string are same ` `        ``if` `(s[i] == s[i + 1]) ` `            ``result++; ``// then need to ` `    ``// delete a character ` ` `  `    ``return` `result; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``cout << countToMake0lternate(``"000111"``) << endl; ` `    ``cout << countToMake0lternate(``"11111"``) << endl; ` `    ``cout << countToMake0lternate(``"01010101"``) << endl; ` `    ``return` `0; ` `} `

## Java

 `// Java program to find minimum number ` `// of characters to be removed to make ` `// a string alternate. ` `import` `java.io.*; ` ` `  `public` `class` `GFG { ` ` `  `    ``// Returns count of minimum characters to ` `    ``// be removed to make s alternate. ` `    ``static` `int` `countToMake0lternate(String s) ` `    ``{ ` `        ``int` `result = ``0``; ` ` `  `        ``for` `(``int` `i = ``0``; i < (s.length() - ``1``); i++) ` ` `  `            ``// if two alternating characters ` `            ``// of string are same ` `            ``if` `(s.charAt(i) == s.charAt(i + ``1``)) ` `                ``result++; ``// then need to ` `        ``// delete a character ` ` `  `        ``return` `result; ` `    ``} ` ` `  `    ``// Driver code ` `    ``static` `public` `void` `main(String[] args) ` `    ``{ ` `        ``System.out.println(countToMake0lternate(``"000111"``)); ` `        ``System.out.println(countToMake0lternate(``"11111"``)); ` `        ``System.out.println(countToMake0lternate(``"01010101"``)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## Python 3

 `# Python 3 program to find minimum number ` `# of characters to be removed to make ` `# a string alternate. ` ` `  `# Returns count of minimum characters  ` `# to be removed to make s alternate. ` `def` `countToMake0lternate(s): ` ` `  `    ``result ``=` `0` ` `  `    ``for` `i ``in` `range``(``len``(s) ``-` `1``): ` ` `  `        ``# if two alternating characters ` `        ``# of string are same ` `        ``if` `(s[i] ``=``=` `s[i ``+` `1``]): ` `            ``result ``+``=` `1` `# then need to ` `                        ``# delete a character ` ` `  `    ``return` `result ` ` `  `# Driver code ` `if` `__name__ ``=``=` `"__main__"``: ` `     `  `    ``print``(countToMake0lternate(``"000111"``)) ` `    ``print``(countToMake0lternate(``"11111"``)) ` `    ``print``(countToMake0lternate(``"01010101"``)) ` ` `  `# This code is contributed by ita_c `

## C#

 `// C# program to find minimum number ` `// of characters to be removed to make ` `// a string alternate. ` `using` `System; ` ` `  `public` `class` `GFG { ` ` `  `    ``// Returns count of minimum characters to ` `    ``// be removed to make s alternate. ` `    ``static` `int` `countToMake0lternate(``string` `s) ` `    ``{ ` `        ``int` `result = 0; ` ` `  `        ``for` `(``int` `i = 0; i < (s.Length - 1); i++) ` ` `  `            ``// if two alternating characters ` `            ``// of string are same ` `            ``if` `(s[i] == s[i + 1]) ` `                ``result++; ``// then need to ` `        ``// delete a character ` ` `  `        ``return` `result; ` `    ``} ` ` `  `    ``// Driver code ` `    ``static` `public` `void` `Main() ` `    ``{ ` `        ``Console.WriteLine(countToMake0lternate(``"000111"``)); ` `        ``Console.WriteLine(countToMake0lternate(``"11111"``)); ` `        ``Console.WriteLine(countToMake0lternate(``"01010101"``)); ` `    ``} ` `} ` ` `  `//  `

## PHP

 ` `

## Javascript

 ``

Output:

```4
4
0```

Time Complexity : O(n) where n is number of characters in input string.

Auxiliary Space: O(1)
This article is contributed by Aarti_Rathi and Ravi Maurya.

Previous
Next
Share your thoughts in the comments