在C ++中计算二进制字符串中的偶数十进制值子字符串
我们仅给出了0和1的字符串。该字符串表示从左到右读取的二进制数。即001是4而不是1。目标是找到代表偶数十进制数字的所有子字符串。
我们将通过检查所有子字符串的第一个值来做到这一点,如果它是0,则number是偶数,即使1则number将是奇数。按长度-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(stringstr,intlength)获取字符串及其长度,并返回形成偶数十进制数的子字符串的计数。
使用FOR循环遍历字符串
从索引i=0到i<len,从左到右读取二进制。
如果有任何str[i]=='0',则表示所有从其开始的子字符串都将为十进制偶数。
增量计数为长度-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