📜  句子中每个单词的 ASCII 值的总和

📅  最后修改于: 2022-05-13 01:57:07.571000             🧑  作者: Mango

句子中每个单词的 ASCII 值的总和

给定一个英文句子(也可以包含数字),我们需要计算并打印该句子中每个单词的字符的 ASCII 值的总和。
例子:

Input :  GeeksforGeeks, a computer science portal for geeks
Output : Sentence representation as sum of ASCII each character in a word:
         1361 97 879 730 658 327 527 
         Total sum -> 4579
Here, [GeeksforGeeks, ] -> 1361, [a] -> 97, [computer] -> 879, [science] -> 730
      [portal] -> 658, [for] -> 327, [geeks] -> 527 

Input : I am a geek
Output : Sum of ASCII values:
         73 206 97 412 
         Total sum -> 788

方法:

  1. 遍历字符串的长度并继续将字符转换为它们的 ASCII
  2. 继续累加值直到句子结束。
  3. 当我们遇到空格字符时,我们存储为该单词计算的总和并将总和再次设置为零。
  4. 稍后,我们打印元素

C++
// C++ implementation for representing
// each word in a sentence as sum of
// ASCII values of each word
#include 
#include 
#include 
using namespace std;
 
// Function to compute the sum of ASCII values of each
// word separated by a space and return the total sum
// of the ASCII values, excluding the space.
long long int ASCIIWordSum(string str,
                          vector& sumArr)
{
 
    int l = str.length();
    int sum = 0;
    long long int bigSum = 0L;
    for (int i = 0; i < l; i++) {
 
        // Separate each word by
        // a space and store values
        // corresponding to each word
        if (str[i] == ' ') {
 
            bigSum += sum;
            sumArr.push_back(sum);
            sum = 0;
        }
        else
 
            // Implicit type casting
            sum +=  str[i];       
    }
 
    // Storing the value of last word
    sumArr.push_back(sum);
    bigSum += sum;
    return bigSum;
}
// Driver function
int main()
{
    string str = "GeeksforGeeks a computer science "
                 "portal for Geeks";
    vector sumArr;
 
    // Calling function
    long long int sum = ASCIIWordSum(str, sumArr);
 
    cout << "Sum of ASCII values:" << std::endl;
    for (auto x : sumArr)
        cout << x << " ";
    cout << endl  << "Total sum -> " << sum;
    return 0;
}


Java
// Java program for representing
// each word in a sentence as sum of
// ASCII values of each word
import java.util.*;
import java.lang.*;
 
class Rextester {
 
    // Function to compute the sum of ASCII values of
    // each word separated by a space and return the
    // total sum of the ASCII values, excluding the
    // space.
    static long ASCIIWordSum(String str, long sumArr[])
    {
        int l = str.length();
        int pos = 0;
        long sum = 0;
        long bigSum = 0;
        for (int i = 0; i < l; i++) {
 
            // Separate each word by
            // a space and store values
            // corresponding to each word
            if (str.charAt(i) == ' ') {
 
                bigSum += sum;
                sumArr[pos++] = sum;
                sum = 0;
            }
            else
 
                // Implicit type casting
                sum += str.charAt(i);           
        }
 
        // Storing the sum of last word
        sumArr[pos] = sum;
        bigSum += sum;
        return bigSum;
    }
 
    // Driver function
    public static void main(String args[])
    {
 
        String str = "GeeksforGeeks, a computer science portal for geeks";
 
        // Counting the number of words in the input sentence
        int ctr = 0;
        for (int i = 0; i < str.length(); i++)
            if (str.charAt(i) == ' ')
                ctr++;
         
        long sumArr[] = new long[ctr + 1];
 
        // Calling function
        long sum = ASCIIWordSum(str, sumArr);
 
        // Printing equivalent sum of the words in the
        // sentence
        System.out.println("Sum of ASCII values:");
        for (int i = 0; i <= ctr; i++)
            System.out.print(sumArr[i] + " ");
        System.out.println();
        System.out.print("Total sum -> " + sum);
    }
}


Python 3
# Python 3 implementation for representing
# each word in a sentence as sum of
# ASCII values of each word
 
# Function to compute the sum of ASCII
# values of each word separated by a space
# and return the total sum of the ASCII
# values, excluding the space.
def ASCIIWordSum(str, sumArr):
 
    l = len(str)
    sum = 0
    bigSum = 0
    for i in range(l):
 
        # Separate each word by a space
        # and store values corresponding
        # to each word
        if (str[i] == ' '):
 
            bigSum += sum
            sumArr.append(sum)
            sum = 0
         
        else:
 
            # Implicit type casting
            sum += ord(str[i])    
 
    # Storing the value of last word
    sumArr.append(sum)
    bigSum += sum
    return bigSum
 
# Driver Code
if __name__ == "__main__":
     
    str = "GeeksforGeeks a computer science portal for Geeks"
    sumArr = []
 
    # Calling function
    sum = ASCIIWordSum(str, sumArr)
 
    print("Sum of ASCII values:" )
    for x in sumArr:
        print(x, end = " ")
         
    print()
    print("Total sum -> ", sum)
 
# This code is contributed by ita_c


C#
// C# program for representing each
// word in a sentence as sum of
// ASCII values of each word
using System;
 
class GFG {
 
    // Function to compute the sum of ASCII
    // values of each word separated by a
    // space and return the total sum of
    // the ASCII values, excluding the space.
    static long ASCIIWordSum(String str, long []sumArr)
    {
        int l = str.Length;
        int pos = 0;
        long sum = 0;
        long bigSum = 0;
        for (int i = 0; i < l; i++) {
 
            // Separate each word by
            // a space and store values
            // corresponding to each word
            if (str[i] == ' ')
            {
                bigSum += sum;
                sumArr[pos++] = sum;
                sum = 0;
            }
            else
 
                // Implicit type casting
                sum += str[i];        
        }
 
        // Storing the sum of last word
        sumArr[pos] = sum;
        bigSum += sum;
        return bigSum;
    }
 
    // Driver function
    public static void Main()
    {
        String str = "GeeksforGeeks, a computer " +
                     "science portal for geeks";
 
        // Counting the number of words
        // in the input sentence
        int ctr = 0;
        for (int i = 0; i < str.Length; i++)
            if (str[i] == ' ')
                ctr++;
         
        long []sumArr = new long[ctr + 1];
 
        // Calling function
        long sum = ASCIIWordSum(str, sumArr);
 
        // Printing equivalent sum of
        // the words in the sentence
        Console.WriteLine("Sum of ASCII values:");
        for (int i = 0; i <= ctr; i++)
            Console.Write(sumArr[i] + " ");
             
        Console.WriteLine();
        Console.Write("Total sum -> " + sum);
    }
}
 
// This code is contributed by nitin mittal


Javascript


输出:

Sum of ASCII values:
1317 97 879 730 658 327 495 
Total sum -> 4503

该方法的复杂性是O(len)

https://youtu.be/B3dghSG2R

-Y