从二进制字符串中删除子字符串 010 的最小步骤
给定一个二进制字符串,任务是计算从该二进制字符串中删除子字符串“010”的最小步骤。
例子:
Input: binary_string = “0101010”
Output: 2
Switching 0 to 1 at index 2 and index 4 will remove the substring 010.
Hence the number of steps needed is 2.
Input: binary_string = “010”
Output: 1
Switching any one 0 to 1 or 1 to 0 will remove the substring 010.
Hence the number of steps needed is 1.
方法:
- 从二进制字符串的开头到 end-2 迭代字符串。
- 如果在二进制字符串中连续三个字符是'0','1','0',那么任何一个字符都可以改变,这样就可以计算一步。
- 将循环计数器增加 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