给定一个字符串,任务是计算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现场课程美国》。