Cuente el número de substrings con un valor numérico mayor que X

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

 

Publicación traducida automáticamente

Artículo escrito por indrajit1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *