使用 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