使用 C++ 统计使二进制字符串“ab”无出现所需的运算次数
给定一个可能包含“ab”的字符串,任务是计算删除字符串中“ab”所需的运算次数。因此,我们的任务首先是检查字符串是否包含“ab”,如果包含,则必须使字符串不包含“ab”。
输入 − 字符串 str = "ababaa"
输出 − 使二进制字符串“ab”无出现所需的运算次数为 − 4
解释 − 正如我们在字符串中看到的,“ab”模式出现了两次,因此我们将“ab”替换为“bba”,因此运算次数为 1,现在字符串为 bbaabaa。再次,我们将“ab”替换为“bba”,因此运算次数为 2,现在字符串为 bbabbaaa。我们还有一个“ab”,因此运算次数为 3,现在字符串为 bbabbaaa。当我们继续用“bba”替换检查到的“ab”时,字符串将变为不包含“ab”。
输入 − str = "abaa"
输出 − 使二进制字符串“ab”无出现所需的运算次数为 − 1
解释 − 正如我们在字符串中看到的,“ab”模式出现一次,因此我们将“ab”替换为“bba”,因此运算次数为 1,现在字符串为 bbaaa。现在,字符串不包含“ab”,计数为 1。
下面程序中使用的方法如下
输入一个字符串,计算字符串的长度,并将数据传递给函数以进行进一步处理。
声明一个临时变量 count 来存储使字符串“ab”无出现所需的运算次数。
创建一个大小为字符串长度 + 1 的字符数组
使用 strcpy() 方法将字符串的字符存储到数组中。
从 0 开始循环到字符串长度
在循环内,检查 IF arr[length - i - 1] = ‘a’,则将 count 设置为 count + 0 并将 total 变量设置为 total * 2
否则,将 total 的计数加 1。
返回计数
打印结果。
示例
#include<bits/stdc++.h>
using namespace std;
int operations_ab_free(string str, int len){
int count = 0;
char arr[length + 1];
strcpy(arr, str.c_str());
int total = 0;
for (int i = 0; i < len; i++){
if (arr[len - i - 1] == 'a'){
count = (count + total);
total = (total * 2);
}
else{
total++;
}
}
return count;
}
int main(){
string str = "ababaa";
int length = str.length();
cout<<"Count of operations to make a binary string “ab” free are: "<<operations_ab_free(str,
length)<<endl;
return 0;
}输出
如果我们运行上面的代码,它将生成以下输出:
Count of operations to make a binary string “ab” free are: 4
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP