C++程式中刪除二進位制字串中的“01”或“10”使其不包含“01”或“10”


在本教程中,我們將編寫一個程式,用於查詢 (01 或 10) 對的總數,以使二進位制字串中不再包含 (01 和 10) 對。讓我們看一個例子。

輸入 − 101010001

輸出 − 4

在上面的示例中,我們必須刪除總共 4 對才能使二進位制字串中不再包含 (01 和 10) 對。

刪除所有對後,得到的字串為 0

我們必須從二進位制字串中刪除所有 0110 對。因此,要刪除的對的總數是 count(1)count(0) 的最小值。

讓我們看看解決問題的步驟。

  • 初始化二進位制字串。

  • 查詢零和一的計數。

  • 列印零和一計數中的最小值。

示例

讓我們看看程式碼。

 線上演示

#include <bits/stdc++.h>
using namespace std;
int findMinimumNumberOfDeletions(string str, int len) {
   int zeroes_count = 0, ones_count = 0;
   // counting zeroes and ones
   for (int i = 0; i < len; i++) {
      if (str[i] == '0') {
         zeroes_count++;
      }
      else {
         ones_count++;
      }
   }
   return min(zeroes_count, ones_count);
}
int main() {
   string str = "101010001";
   int len = str.length();
   cout << findMinimumNumberOfDeletions(str, len) << endl;
   return 0;
}

輸出

如果執行上述程式,則將獲得以下結果。

4

結論

如果您在本教程中有任何疑問,請在評論區中提出。

更新於: 2021年1月27日

189 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告