Recuento de substrings de una string binaria que contiene solo 1s

Dada una string binaria de longitud N , necesitamos averiguar cuántas substrings de esta string contienen solo 1.

Ejemplos: 

Entrada: S = “0110111”
Salida: 9
Explicación:
Hay 9 substrings con solo caracteres de 1. 
“1” viene 5 veces. 
“11” viene 3 veces. 
«111» viene 1 vez.

Entrada: S = “000”
Salida: 0

Enfoque : la idea es atravesar la string binaria y contar los consecutivos en la string. A continuación se muestra la ilustración del enfoque:

  • Atraviesa la string binaria dada desde el índice 0 hasta la longitud – 1
  • Cuente el número de «1» consecutivos hasta el índice i.
  • Por cada nuevo carácter str[i], habrá más substrings con todos los caracteres como “1”

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ implementation to find
// count of substring containing
// only ones
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the total number
// of substring having only ones
int countOfSubstringWithOnlyOnes(string s)
{
    int res = 0, count = 0;
    for (int i = 0; i < s.length(); i++) {
    count = s[i] == '1' ? count + 1 : 0;
    res = (res + count);
    }
    return res;
}
 
// Driver Code
int main()
{
    string s = "0110111";
    cout << countOfSubstringWithOnlyOnes(s)
        << endl;
    return 0;
}

Java

// Java implementation to find
// count of substring containing
// only ones
class GFG{
     
// Function to find the total number
// of substring having only ones
static int countOfSubstringWithOnlyOnes(String s)
{
    int res = 0, count = 0;
    for(int i = 0; i < s.length(); i++)
    {
        count = s.charAt(i) == '1' ? count + 1 : 0;
        res = (res + count);
    }
    return res;
}
 
// Driver code
public static void main(String[] args)
{
    String s = "0110111";
     
    System.out.println(countOfSubstringWithOnlyOnes(s));
}
}
 
// This code is contributed by dewantipandeydp

Python3

# Python3 implementation to find
# count of substring containing
# only ones
 
# Function to find the total number
# of substring having only ones
def countOfSubstringWithOnlyOnes(s):
 
    count = 0
    res = 0
     
    for i in range(0,len(s)):
        if s[i] == '1':
            count = count + 1
        else:
            count = 0;
             
        res = res + count
             
    return res
 
# Driver Code
s = "0110111"
print(countOfSubstringWithOnlyOnes(s))
 
# This code is contributed by jojo9911

C#

// C# implementation to find count
// of substring containing only ones
using System;
 
class GFG{
     
// Function to find the total number
// of substring having only ones
static int countOfSubstringWithOnlyOnes(string s)
{
    int res = 0, count = 0;
     
    for(int i = 0; i < s.Length; i++)
    {
        count = s[i] == '1' ? count + 1 : 0;
        res = (res + count);
    }
    return res;
}
 
// Driver code
public static void Main(string[] args)
{
    string s = "0110111";
     
    Console.Write(countOfSubstringWithOnlyOnes(s));
}
}
 
// This code is contributed by rutvik_56

Javascript

<script>
 
// Javascript implementation to find
// count of substring containing
// only ones
 
// Function to find the total number
// of substring having only ones
function countOfSubstringWithOnlyOnes(s)
{
    var res = 0, count = 0;
    for (var i = 0; i < s.length; i++) {
    count = s[i] == '1' ? count + 1 : 0;
    res = (res + count);
    }
    return res;
}
 
// Driver Code
var s = "0110111";
document.write( countOfSubstringWithOnlyOnes(s));
 
</script>
Producción

9

Complejidad de tiempo: O(n), donde n es el tamaño de la string dada
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por spp____ 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 *