在 C++ 中使二进制字符串“ab”免费的操作计数
我们得到一个可以包含“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直到字符串的长度
在循环内,检查IFarr[length-i-1]='a'然后将count设置为count+0并将total变量设置为total*2
否则,将总计的计数增加1。
返回计数
打印结果。
示例
#includeusing 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: "< 输出结果 如果我们运行上面的代码,它将生成以下输出-
Count of operations to make a binary string “ab” free are: 4