使二进制字符串交替的翻转次数 - C++ 集 1
假设你有一个二进制字符串 "10011"。为了使其成为交替的二进制字符串,我们需要至少翻转 2 个字符,例如 "10101"。
交替字符串有两种可能性。它将以 0 或 1 开头。我们将检查这两个交替字符串并计算两者所需的翻转次数。
然后返回两者中的最小值。让我们看一个例子。
输入
binary = "10011"
输出
2
如果我们以 0 开头,则需要翻转 3 次。如果我们以 1 开头,则需要翻转 2 次。最小值是 2。
算法
- 初始化二进制字符串。
- 计算使字符串交替(以 1 开头)所需的翻转次数。
- 类似地,计算使字符串交替(以 0 开头)所需的翻转次数。
- 找到上述两个数中的最小值。
- 打印最小值。
实现
以下是上述算法在 C++ 中的实现
#include <bits/stdc++.h>
using namespace std;
char flip(char binaryDigit) {
return binaryDigit == '0' ? '1' : '0';
}
int getFlipCountToAlternateString(string binary, char expected) {
int flipCount = 0;
for (int i = 0; i < binary.length(); i++) {
if (binary[i] != expected) {
flipCount++;
}
expected = flip(expected);
}
return flipCount;
}
int main() {
string binary = "10011";
cout << min(getFlipCountToAlternateString(binary, '0'), getFlipCountToAlternateString(binary, '1')) << endl;
return 0;
}输出
如果你运行上面的代码,你将得到以下结果。
2
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP