Cuente el número de palabras que tienen una suma de valores ASCII menor que y mayor que k

Dada una string, la tarea es contar el número de palabras cuya suma de valores Ascii es menor y mayor o igual que la k dada.
Ejemplos: 
 

Input: str = "Learn how to code", k = 400
Output:
Number of words having sum of ascii less than k = 2
Number of words having sum of ascii greater than or equal to k = 2

Input: str = "Geeks for Geeks", k = 400
Output:
Number of words having sum of ascii less than k = 1
Number of words having sum of ascii greater than or equal to k = 2

Enfoque: cuente la cantidad de palabras que tienen la suma de valores ASCII menor que k y restarla de la cantidad total de palabras para obtener la cantidad de palabras que tienen valores ASCII a la suma mayor o igual a k. Comience a recorrer la string letra por letra y agregue el valor ASCII a la suma. Si hay un espacio, incremente el conteo si la suma es menor que k y también establecerá la suma en 0.
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to count the words
void CountWords(string str, int k)
{
    // Sum of ascii values
    int sum = 0;
 
    int NumberOfWords = 0;
 
    // Number of words having
    // sum of ascii less than k
    int counter = 0;
 
    int len = str.length();
 
    for (int i = 0; i < len; ++i) {
        // If character is a space
        if (str[i] == ' ') {
            if (sum < k)
                counter++;
 
            sum = 0;
            NumberOfWords++;
        }
        else
            // Add the ascii value to sum
            sum += str[i];
    }
 
    // Handling the Last word separately
    NumberOfWords++;
    if (sum < k)
        counter++;
 
    cout << "Number of words having sum of ASCII"
            " values less than k = "
         << counter << endl;
    cout << "Number of words having sum of ASCII values"
            " greater than or equal to k = "
         << NumberOfWords - counter;
}
 
// Driver code
int main()
{
    string str = "Learn how to code";
    int k = 400;
    CountWords(str, k);
 
    return 0;
}

Java

// Java implementation of the
// above approach
class GFG
{
     
// Function to count the words
static void CountWords(String str, int k)
{
    // Sum of ascii values
    int sum = 0;
 
    int NumberOfWords = 0;
 
    // Number of words having
    // sum of ascii less than k
    int counter = 0;
 
    int len = str.length();
 
    for (int i = 0; i < len; ++i)
    {
        // If character is a space
        if (str.charAt(i) == ' ')
        {
            if (sum < k)
            {
                counter++;
            }
 
            sum = 0;
            NumberOfWords++;
        }
         
        else // Add the ascii value to sum
        {
            sum += str.charAt(i);
        }
    }
 
    // Handling the Last word separately
    NumberOfWords++;
    if (sum < k)
    {
        counter++;
    }
 
    System.out.println("Number of words having sum " +
                    "of ASCII values less than k = " +
                                             counter);
    System.out.println("Number of words having sum of " +
           "ASCII values greater than or equal to k = " +
                              (NumberOfWords - counter));
}
 
// Driver code
public static void main(String[] args)
{
    String str = "Learn how to code";
    int k = 400;
    CountWords(str, k);
}
}
 
// This code is contributed by RAJPUT-JI

Python 3

# Python 3 implementation of the
# above approach
 
# Function to count the words
def CountWords(str, k):
 
    # Sum of ascii values
    sum = 0
 
    NumberOfWords = 0
 
    # Number of words having
    # sum of ascii less than k
    counter = 0
 
    l = len(str)
 
    for i in range(l):
         
        # If character is a space
        if (str[i] == ' ') :
            if (sum < k):
                counter += 1
 
            sum = 0
            NumberOfWords += 1
         
        else:
             
            # Add the ascii value to sum
            sum += ord(str[i])
 
    # Handling the Last word separately
    NumberOfWords += 1
    if (sum < k):
        counter += 1
 
    print("Number of words having sum of ASCII",
          "values less than k =", counter)
    print("Number of words having sum of ASCII values",
                        "greater than or equal to k =",
                               NumberOfWords - counter)
 
# Driver code
if __name__ == "__main__":
     
    str = "Learn how to code"
    k = 400
    CountWords(str, k)
 
# This code is contributed
# by ChitraNayal

C#

// C# implementation of the
// above approach
using System;
 
class GFG
{
 
// Function to count the words
static void CountWords(String str,
                       int k)
{
    // Sum of ascii values
    int sum = 0;
 
    int NumberOfWords = 0;
 
    // Number of words having
    // sum of ascii less than k
    int counter = 0;
 
    int len = str.Length;
 
    for (int i = 0; i < len; ++i)
    {
        // If character is a space
        if (str[i]==' ')
        {
            if (sum < k)
            {
                counter++;
            }
 
            sum = 0;
            NumberOfWords++;
        }
        else // Add the ascii value to sum
        {
            sum += str[i];
        }
    }
 
    // Handling the Last word
    // separately
    NumberOfWords++;
    if (sum < k)
    {
        counter++;
    }
 
    Console.WriteLine("Number of words having sum " +
                      "of ASCII values less than k = " +
                                               counter);
    Console.WriteLine("Number of words having sum of " +
          "ASCII values greater than or equal to k = " +
                             (NumberOfWords - counter));
}
 
// Driver code
public static void Main(String[] args)
{
    String str = "Learn how to code";
    int k = 400;
    CountWords(str, k);
}
}
 
// This code is contributed by RAJPUT-JI

PHP

<?php
// PHP implementation of the above approach
 
// Function to count the words
function CountWords($str, $k)
{
    // Sum of ascii values
    $sum = 0;
 
    $NumberOfWords = 0;
 
    // Number of words having
    // sum of ascii less than k
    $counter = 0;
 
    $len = strlen($str);
 
    for ($i = 0; $i < $len; ++$i)
    {
        // If character is a space
        if ($str[$i] == ' ')
        {
            if ($sum < $k)
                $counter++;
 
            $sum = 0;
            $NumberOfWords++;
        }
        else
         
            // Add the ascii value to sum
            $sum += ord($str[$i]);
    }
 
    // Handling the Last word separately
    $NumberOfWords++;
    if ($sum < $k)
        $counter++;
 
    echo "Number of words having sum of ASCII" .
         " values less than k = " . $counter . "\n";
    echo "Number of words having sum of ASCII " .
         "values greater than or equal to k = " .
                     ($NumberOfWords - $counter);
}
 
// Driver code
$str = "Learn how to code";
$k = 400;
CountWords($str, $k);
 
// This code is contributed by mits
?>

Javascript

<script>
 
// JavaScript implementation of the
// above approach
 
// Function to count the words
function CountWords(str, k)
{
    // Sum of ascii values
    let sum = 0;
 
    let NumberOfWords = 0;
 
    // Number of words having
    // sum of ascii less than k
    let counter = 0;
 
    let len = str.length;
 
    for (let i = 0; i < len; ++i) {
        // If character is a space
        if (str[i] == " ") {
            if (sum < k) {
                counter++;
            }
 
            sum = 0;
            NumberOfWords++;
        }
        else {
            // Add the ascii value to sum
            sum += str.charCodeAt(i);
        }
    }
 
    // Handling the Last word separately
    NumberOfWords++;
    if (sum < k) {
        counter++;
    }
 
    document.write("Number of words having sum " +
                   "of ASCII values less than k = " +
                                   counter + "<br>");
    document.write("Number of words having sum of " +
         "ASCII values greater than or equal to k = " +
                   (NumberOfWords - counter) + "<br>");
}
 
// Driver code
 
    let str = "Learn how to code";
    let k = 400;
    CountWords(str, k);
 
 
// This code is contributed by Surbhi Tyagi.
 
</script>
Producción: 

Number of words having sum of ASCII values less than k = 2
Number of words having sum of ASCII values greater than or equal to k = 2

 

Complejidad de tiempo: O(N), ya que estamos usando un bucle para atravesar N veces, por lo que nos costará O(N) tiempo 
Espacio auxiliar: O(1), ya que no estamos usando ningún espacio adicional.

Publicación traducida automáticamente

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