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>
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