📌  相关文章
📜  从二进制字符串中删除子字符串 010 的最小步骤

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

从二进制字符串中删除子字符串 010 的最小步骤

给定一个二进制字符串,任务是计算从该二进制字符串中删除子字符串“010”的最小步骤。
例子:

方法:

  1. 从二进制字符串的开头到 end-2 迭代字符串。
  2. 如果在二进制字符串中连续三个字符是'0','1','0',那么任何一个字符都可以改变,这样就可以计算一步。
  3. 将循环计数器增加 2。

下面是上述方法的实现:

C++
// CPP program to calculate steps
// to remove substring 010
// from a binary string
 
#include 
using namespace std;
 
// Function to find the minimum steps
int minSteps(string str)
{
 
    int count = 0;
 
    for (int i = 0; i < str.length() - 2; i++) {
 
        if (str[i] == '0') {
            if (str[i + 1] == '1') {
                if (str[i + 2] == '0') {
 
                    // substring "010" found
                    count++;
                    i += 2;
                }
            }
        }
    }
 
    return count;
}
 
// Driver code
int main()
{
 
    // Get the binary string
    string str = "0101010";
 
    // Find the minimum steps
    cout << minSteps(str);
 
    return 0;
}


Java
// Java program to calculate steps
// to remove substring 010
// from a binary string
import java.util.*;
 
class GFG{
 
// Function to find the minimum steps
static int minSteps(String str)
{
 
    int count = 0;
 
    for (int i = 0; i < str.length() - 2; i++) {
 
        if (((int)str.charAt(i)) == '0') {
            if (str.charAt(i + 1) == '1') {
                if (str.charAt(i + 2) == '0') {
 
                    // substring "010" found
                    count++;
                    i += 2;
                }
            }
        }
    }
 
    return count;
}
 
// Driver code
public static void main(String args[])
{
 
    // Get the binary string
    String str = "0101010";
 
    // Find the minimum steps
    System.out.println(minSteps(str));
}
}


Python3
# Python3 program to calculate steps
# to remove substring 010
# from a binary string
 
# Function to find the minimum steps
def minSteps(str):
     
    count = 0
    i = 0
    while i < len(str) - 2:
        if str[i] == '0':
            if(str[i + 1] == '1'):
                if(str[i + 2] == '0'):
                     
                    # substring "010" found
                    count = count + 1
                    i = i + 2
        i = i + 1
     
    return count
 
# Driver code
 
# Get the binary string
str = "0101010"
 
# Find the minimum steps
print(minSteps(str))
         
# This code is contributed
# by Shashank_Sharma


C#
// C# program to calculate steps
// to remove substring 010
// from a binary string
using System;
 
class GFG
{
 
// Function to find the minimum steps
static int minSteps(string str)
{
    int count = 0;
 
    for (int i = 0; i < str.Length - 2; i++)
    {
 
        if (((int)str[i]) == '0')
        {
            if (str[i + 1] == '1')
            {
                if (str[i + 2] == '0')
                {
 
                    // substring "010" found
                    count++;
                    i += 2;
                }
            }
        }
    }
 
    return count;
}
 
// Driver code
public static void Main()
{
 
    // Get the binary string
    string str = "0101010";
 
    // Find the minimum steps
    Console.Write(minSteps(str));
}
}
 
// This code is contributed by ChitraNayal


PHP


Javascript


输出:
2