We are given a sentence of English language(can also contain digits), we need to compute and print the sum of ASCII values of characters of each word in that sentence.
Examples:
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
Approach:
- Iterate over the length of the string and keep converting the characters to their ASCII
- Keep adding up the values till the end of sentence.
- When we come across a space character, we store the sum calculated for that word and set the sum equal to zero again.
- Later, we print elements
Implementation:
// C++ implementation for representing
// each word in a sentence as sum of
// ASCII values of each word
#include <iostream>
#include <string>
#include <vector>
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<long long int>& 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<long long int> 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 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 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# 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
<script>
// Javascript program 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.
function ASCIIWordSum(str,sumArr)
{
let l = str.length;
let pos = 0;
let sum = 0;
let bigSum = 0;
for (let 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].charCodeAt(0);
}
// Storing the sum of last word
sumArr[pos] = sum;
bigSum += sum;
return bigSum;
}
// Driver function
let str = "GeeksforGeeks, a computer
science portal for geeks";
// Counting the number of words
// in the input sentence
let ctr = 0;
for (let i = 0; i < str.length; i++)
if (str[i] == ' ')
ctr++;
let sumArr = new Array(ctr + 1);
// Calling function
let sum = ASCIIWordSum(str, sumArr);
// Printing equivalent sum of the words in the
// sentence
document.write("Sum of ASCII values:<br>");
for (let i = 0; i <= ctr; i++)
document.write(sumArr[i] + " ");
document.write("<br>");
document.write("Total sum -> " + sum);
// This code is contributed by avanitrachhadiya2155
</script>
Output
Sum of ASCII values: 1317 97 879 730 658 327 495 Total sum -> 4503
Time Complexity: O(N), as we are using a loop to traverse N times. Where N is the length of the string that is number of characters in the sentence.
Auxiliary Space: O(W), as we are using extra space for the sumArr. Where W is the number of words in the sentence.