我们给了一个数字字符串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(string str,int x)接受字符串及其长度,并返回形成大于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