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