C++中計算二進位制字串中偶數十進位制值子串的數量
我們得到一個僅包含 0 和 1 的字串。該字串表示從左到右讀取的二進位制數,例如 001 表示 4 而不是 1。目標是找到所有表示偶數十進位制數的子串。
我們將透過檢查所有子串的第一個值來做到這一點,如果它是 0,則數字為偶數;如果它是 1,則數字為奇數。將計數增加 length-i,因為所有以 sbstr[0]=’0’ 開頭的子串在十進位制中都將是偶數。
讓我們透過示例來理解。
輸入 − str=”101”
輸出 − 二進位制字串中偶數十進位制值子串的數量為 2
解釋 − 可能的子串有:10、11、01、0、1,其中 01 是 2,0 是 0,共有 2 個偶數。
輸入 − str=”111”
輸出 − 二進位制字串中偶數十進位制值子串的數量為 0
解釋 − 可能的子串有 11、1,其中沒有偶數。
下面程式中使用的演算法如下
我們將一個字串 str 作為只包含 0 和 1 的字串。
將 str 的長度儲存在 len=str.length() 中
函式 count_even(string str, int length) 獲取字串及其長度,並返回構成偶數十進位制數的子串的數量。
使用 FOR 迴圈遍歷字串
從索引 i=0 到 i<len 開始,從左到右讀取二進位制數。
如果任何 str[i]==’0’,則表示所有從此開始的子串在十進位制中都是偶數。
將計數增加 length-i。
返回計數作為結果。
示例
#include <bits/stdc++.h>
using namespace std;
int count_even(string str, int length){
int count = 0;
for (int i = 0; i < length; i++){
if (str[i] == '0'){
count += (length - i);
}
}
return count;
}
int main(){
string str = "00111";
int len = str.length();
cout<<"Count of even decimal value substrings in a binary string are: "<<count_even(str, len) << endl;
return 0;
}輸出
如果我們執行上面的程式碼,它將生成以下輸出:
Count of even decimal value substrings in a binary string are: 9
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP