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 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告