计算C ++中数字值大于X的子字符串的数量
我们给了一个数字字符串0到9。该字符串代表一个十进制数字。目的是找到代表大于十进制数字X的十进制数字的所有子字符串。条件是子字符串不应以0开头。即“2021”,“02”,“021”。“0”将不包括在内。
我们将通过检查所有子字符串的第一个值(如果该值大于0)来实现此目的,然后通过使用将其转换为整数,从该索引开始创建子字符串stoi()
。如果substring>X递增计数。
让我们通过示例来理解。
输入-str=“123”X=12
输出-数值大于X的子字符串的数量为-2
说明子字符串>12是123和23。
输入-str=“111”X=100
输出-二进制字符串中偶数十进制值子字符串的计数为-1
说明仅111大于100。
以下程序中使用的方法如下
我们只将字符串str作为数字字符串。
将str的长度存储在len=str.length()中
函数Greater_X(stringstr,intx)接受字符串及其长度,并返回形成大于10的十进制数的子字符串计数。
使用FOR循环遍历字符串
从索引i=0到i<len,从左到右读取。
如果有任何str[i]!='0',则所有从其开始的子字符串均有效。
对于子串的长度,从索引j=1到i+j<len。
使用将子字符串str.substr(i,j)转换为十进制stoi()
。如果大于X,则递增计数。
返回计数作为结果。
示例
#include <bits/stdc++.h> using namespace std; int greater_X(string str, int x){ int count = 0; int len = str.length(); for (int i = 0; i < len; ++i){ if(str[i] != '0'){ for (int j=1; (i + j) <= len; ++j){ if (stoi(str.substr(i, j)) > x){ count++; } } } } return count; } int main(){ string str = "987"; int x = 100; cout<<"Count of number of substrings with numeric value greater than X are: "<<greater_X(str, x); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Count of number of substrings with numeric value greater than X are: 1