我们得到一个可以包含“ab”的字符串,任务是计算从字符串中删除或删除“ab”所需的操作计数。所以,我们的任务是首先检查字符串是否包含“ab”,如果是,那么我们必须使字符串“ab”空闲。
输入- 字符串 str = "ababaa"
输出- 使二进制字符串“ab”免费的操作计数是 - 4
说明- 正如我们在字符串“ab”中看到的那样,模式出现了两次,因此我们将“ab”替换为“bba”,因此操作计数为 1,现在字符串为 bbaabaa。同样,我们将“ab”替换为“bba”,因此操作次数为 2,现在字符串为 babbaaa。我们还有一个“ab”,所以操作次数是 3,现在字符串是 babbaaa。随着我们继续用“bba”替换检查过的“ab”,字符串将变为“ab”空闲。
输入- str = "abaa"
输出- 使二进制字符串“ab”免费的操作计数为 - 1
说明- 正如我们在字符串“ab”中看到的那样,模式出现了一次,因此我们将“ab”替换为“bba”,因此操作计数为 1,现在字符串为 bbaaa。现在,字符串是“ab”空闲的,计数为 1。
输入一个字符串并计算字符串的长度并将数据传递给函数进行进一步处理。
声明一个临时变量 count 来存储使字符串“ab”空闲所需的操作。
创建一个大小为字符串长度+1的字符数组
使用strcpy()方法将字符串的字符存储在数组中。
从 0 开始循环 FOR 直到字符串的长度
在循环内,检查 IF arr[length - i - 1] = 'a' 然后将 count 设置为 count + 0 并将 total 变量设置为 total * 2
否则,将总计的计数增加 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