使二進位制字串交替的翻轉次數 - 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