📜  计算ASCII值之和小于和大于k的单词数

📅  最后修改于: 2021-06-01 02:17:14             🧑  作者: Mango

给定一个字符串,任务是计算Ascii值之和小于和大于或等于给定k的单词数。
例子:

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

方法:计算ASCII值之和小于k的单词数,并从单词总数中减去它,以使ASCII值的和等于或大于k。开始逐个字母遍历字符串,并将ASCII值加到sum上。如果有空格,则在总和小于k的情况下增加计数,并将总和设置为0。
下面是上述方法的实现:

C++
// C++ implementation of the above approach
#include 
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


Javascript


输出:
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

时间复杂度: O(N)

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。