Dada una string ‘S’ (compuesta por dígitos) y un entero ‘X’, la tarea es contar todas las substrings de ‘S’ que cumplan las siguientes condiciones:
- La substring no debe comenzar con el dígito ‘0’.
- Y el número numérico que representa debe ser mayor que ‘X’.
Nota: dos formas de seleccionar una substring son diferentes si comienzan o terminan en índices diferentes.
Ejemplos:
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".
Acercarse:
- Itere sobre cada dígito de la string ‘S’ y elija los dígitos que son mayores que ‘0’.
- Ahora, tome todas las substrings posibles a partir del carácter elegido en el paso anterior y convierta cada substring en un número entero.
- Compara el número entero del paso anterior con ‘X’. Si el número es mayor que ‘X’, incremente la variable de conteo.
- Finalmente, imprima el valor de la variable de conteo.
A continuación se muestra la implementación del enfoque anterior:
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>
Producción:
3