Count number of substrings with numeric value greater than X Last Updated : 17 Apr, 2023 Summarize Comments Improve Suggest changes Share Like Article Like Report Given a string 'S' (composed of digits) and an integer 'X", the task is to count all the sub-strings of 'S' that satisfy the following conditions: The sub-string must not begin with the digit '0'.And the numeric number it represents must be greater than 'X'. Note: Two ways of selecting a sub-string are different if they begin or end at different indices. Examples: Input: S = "471", X = 47 Output: 2 Only the sub-strings "471" and "71" satisfy the given conditions. Input: S = "2222", X = 97 Output: 3 Valid strings are "222", "222" and "2222". Approach: Iterate over each digit of the string 'S' and choose the digits which are greater than '0'.Now, take all possible sub-strings starting from the character chosen in the previous step and convert each sub-string to an integer.Compare the integer from the previous step to 'X'. If the number is greater than 'X', then increment the count variable.Finally, print the value of the count variable. Below is the implementation of the above approach: C++ // C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function that counts // valid sub-strings int count(string S, int X) { int count = 0; const int N = S.length(); for (int i = 0; i < N; ++i) { // Only take those numbers // that do not start with '0'. if (S[i] != '0') { for (int len = 1; (i + len) <= N; ++len) { // converting the sub-string // starting from index 'i' // and having length 'len' to int // and checking if it is greater // than X or not if (stoi(S.substr(i, len)) > X) count++; } } } return count; } // Driver code int main() { string S = "2222"; int X = 97; cout << count(S, X); return 0; } Java // Java implementation of the approach import java.util.*; class GFG { // Function that counts // valid sub-strings static int count(String S, int X) { int count = 0; int N = S.length(); for (int i = 0; i < N; ++i) { // Only take those numbers // that do not start with '0'. if (S.charAt(i) != '0') { for (int len = 1; (i + len) <= N; ++len) { // converting the sub-string // starting from index 'i' // and having length 'len' to // int and checking if it is // greater than X or not int num = Integer.parseInt(S.substring(i, i + len)); if (num > X) count++; } } } return count; } // Driver code public static void main(String []args) { String S = "2222"; int X = 97; System.out.println(count(S, X)); } } // This code is contributed by ihritik Python3 # Python3 implementation of # the approach # Function that counts # valid sub-strings def countSubStr(S, X): cnt = 0 N = len(S) for i in range(0, N): # Only take those numbers # that do not start with '0'. if (S[i] != '0'): j = 1 while((j + i) <= N): # converting the sub-string # starting from index 'i' # and having length 'len' to # int and checking if it is # greater than X or not num = int(S[i : i + j]) if (num > X): cnt = cnt + 1 j = j + 1 return cnt; # Driver code S = "2222"; X = 97; print(countSubStr(S, X)) # This code is contributed by ihritik C# // C# implementation of the approach using System; class GFG { // Function that counts // valid sub-strings static int count(string S, int X) { int count = 0; int N = S.Length; for (int i = 0; i < N; ++i) { // Only take those numbers // that do not start with '0'. if (S[i] != '0') { for (int len = 1; (i + len) <= N; ++len) { // converting the sub-string // starting from index 'i' // and having length 'len' to int // and checking if it is greater // than X or not int num = Int32.Parse(S.Substring(i, len)); if (num > X) count++; } } } return count; } // Driver code public static void Main(String []args) { string S = "2222"; int X = 97; Console.WriteLine(count(S, X)); } } // This code is contributed by ihritik PHP <?php // PHP implementation of the approach // Function that counts // valid sub-strings function countSubStr($S, $X) { $cnt = 0; $N = strlen($S); for ($i = 0; $i < $N; ++$i) { // Only take those numbers // that do not start w$ith '0'. if ($S[$i] != '0') { for ($len = 1; ($i + $len) <= $N; ++$len) { // converting the sub-str$ing // starting from index 'i' // and having length 'len' to int // and checking if it is greater // than X or not $num = intval(substr($S, $i, $len)); if ($num > $X) $cnt++; } } } return $cnt; } // Driver code $S = "2222"; $X = 97; echo countSubStr($S, $X); // This code is contributed by ihritik ?> JavaScript <script> // Javascript implementation of the approach // Function that counts // valid sub-strings function count(S, X) { var count = 0; var N = S.length; for (var i = 0; i < N; ++i) { // Only take those numbers // that do not start with '0'. if (S[i] != '0') { for (var len = 1; (i + len) <= N; ++len) { // converting the sub-string // starting from index 'i' // and having length 'len' to int // and checking if it is greater // than X or not if (parseInt(S.substring(i, i+len)) > X) count++; } } } return count; } // Driver code var S = "2222"; var X = 97; document.write( count(S, X)); </script> Output3 Complexity Analysis: Time Complexity: O(N3)Auxiliary Space: O(1) Comment More infoAdvertise with us Next Article Number of substrings with each character occurring even times I indrajit1 Follow Improve Article Tags : DSA substring Similar Reads Number of substrings with each character occurring even times Given a string S consisting of N lowercase alphabets, the task is to count the number of substrings whose frequency of each character is even. Examples: Input: S = "abbaa"Output: 4Explanation:The substrings having frequency of each character is even are {"abba", "aa", "bb", "bbaa"}.Therefore, the co 14 min read Count smaller values whose XOR with x is greater than x Given a integer 'x', find the number of values of 'a' satisfying the following conditions: a XOR x > x0 < a < x Examples : Input : x = 10 Output : 5 Explanation: For x = 10, following 5 values of 'a' satisfy the conditions: 1 XOR 10 = 11 4 XOR 10 = 14 5 XOR 10 = 15 6 XOR 10 = 12 7 XOR 10 = 7 min read Count Substrings with Frequencies Less than Maximum Digit Given a string S of length N. Then your task is to find the count of substrings such that, the frequency of each digit in that substring must be less than the maximum digit of substring. Examples:Input: S = 122321Output: 13Explanation: Below are some of those substrings: S[1, 2]: 12. Max element = 2 6 min read Count Substrings with equal number of 0s, 1s and 2s Given a string that consists of only 0s, 1s and 2s, count the number of substrings that have an equal number of 0s, 1s, and 2s.Examples: Input: str = â0102010âOutput: 2Explanation: Substring str[2, 4] = â102â and substring str[4, 6] = â201â has equal number of 0, 1 and 2Input: str = "102100211"Outpu 9 min read Number of substrings that start with "geeks" and end with "for" Given a string str consisting of lowercase English alphabets, the task is to find the count of substrings that start with "geeks" and end with "for". Examples: Input: str = "geeksforgeeksisforgeeks" Output: 3 "geeksfor", "geeksforgeeksisfor" and "geeksisfor" are the only valid substrings. Input: str 4 min read Number of substrings with count of each character as k Given a string and an integer k, find the number of substrings in which all the different characters occur exactly k times. Examples: Input : s = "aabbcc" k = 2 Output : 6 The substrings are aa, bb, cc, aabb, bbcc and aabbcc. Input : s = "aabccc" k = 2 Output : 3 There are three substrings aa, cc an 15 min read Like