📌  相关文章
📜  要删除的最小字符数以使二进制字符串交替

📅  最后修改于: 2022-05-13 01:57:06.592000             🧑  作者: Mango

要删除的最小字符数以使二进制字符串交替

给定一个二进制字符串,任务是找到要从中删除的最小字符数,以便它成为备用。如果没有两个连续的 0 或 1,则二进制字符串是交替的。
例子 :

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  

这个问题有以下简单的解决方案。
我们从左到右遍历字符串并将当前字符与下一个字符进行比较。

  1. 如果 current 和 next 不同,则无需执行删除。
  2. 如果 current 和 next 相同,我们需要执行一次删除操作以使它们交替。

下面是上述算法的实现。

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"));
    }
}
 
// This article is contributed by vt_m.


PHP


Javascript


输出:

4
4
0