Open In App

Print number of words, vowels and frequency of each character

Improve
Improve
Like Article
Like
Save
Share
Report

Given a string str with uppercase, lowercase and special characters. The input string is to end with either a space or a dot. The problem is to calculate the number of words, vowels and frequency of each character of the string in a separate line.

Example : 

Input : How Good GOD Is.

Output : 
Number of words = 4
Number of vowels = 5
Number of upper case characters = 6
Character =   Frequency = 3
Character = . Frequency = 1
Character = D Frequency = 1
Character = G Frequency = 2
Character = H Frequency = 1
Character = I Frequency = 1
Character = O Frequency = 1
Character = d Frequency = 1
Character = o Frequency = 3
Character = s Frequency = 1
Character = w Frequency = 1

Approach : We use a TreeMap to store characters and their frequencies. TreeMap is used to get the output in sorted order.

Below is Java implementation of above approach : 

C++




// C++ program to print Number of Words,
// Vowels and Frequency of Each Character
#include <bits/stdc++.h>
using namespace std;
 
void words(string str)
{
    int wcount = 0, ucount = 0, vcount = 0;
    for (int i = 0; i < str.length(); i++)
    {
        char c = str[i];
        switch (c)
        {
            case ' ':
            case '.':
            wcount++; // more delimiters can be given
        }
 
        switch (c)
        {
            case 'A':
            case 'E':
            case 'I':
            case 'O':
            case 'U':
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                vcount++;
        }
 
        if (c >= 65 and c <= 90) ucount++;
    }
 
    cout << "Number of words = "
         << wcount << endl;
    cout << "Number of vowels = "
         << vcount << endl;
    cout << "Number of upper case characters = "
         << ucount << endl;
}
 
// Function to calculate the frequency
// of each character in the string
void frequency(string str)
{
    // Creates an empty TreeMap
    map<char, int> hmap;
 
    // Traverse through the given array
    for (int i = 0; i < str.length(); i++)
        hmap[str[i]]++;
 
    // Print result
    for (auto i : hmap)
    {
        cout << "Character = " << i.first;
        cout << " Frequency = "
             << i.second << endl;
    }
}
 
// Driver Code
int main(int argc, char const *argv[])
{
    string str = "Geeks for Geeks.";
    words(str);
    frequency(str);
    return 0;
}
 
// This code is contributed by
// sanjeev2552


Java




// Java program to print Number of Words,
// Vowels and Frequency of Each Character
import java.util.*;
import java.lang.*;
import java.io.*;
 
public class Stringfun
{
    String str = "Geeks for Geeks.";
 
    void words()
    {
        int wCount = 0, uCount = 0, vCount = 0;
 
        for (int i = 0; i < str.length(); i++)
        {
            char c = str.charAt(i);
 
            switch (c)
            {
            case ' ':
            case '.':
                wCount++; // more delimiters can be given
            }
 
            switch (c)
            {
            // program for calculating number of vowels
            case 'A':
            case 'E':
            case 'I':
            case 'O':
            case 'U':
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                vCount++;
            }
 
            if (c >= 65 && c <= 90)
            {
                uCount++;
            }
        }
 
        System.out.println("Number of words = " + wCount);
        System.out.println("Number of vowels = " + vCount);
        System.out.println("Number of upper case characters = "
                                                        + uCount);
    }
 
    // Function to calculate the frequency
    // of each character in the string
    void frequency()
    {
        // Creates an empty TreeMap
        TreeMap<Character, Integer> hmap =
                     new TreeMap<Character, Integer>();
  
        // Traverse through the given array
        for (int i = 0; i < str.length(); i++)
        {
            Integer c = hmap.get(str.charAt(i));
  
            // If this is first occurrence of element
            if (hmap.get(str.charAt(i)) == null)
               hmap.put(str.charAt(i), 1);
  
            // If elements already exists in hash map
            else
              hmap.put(str.charAt(i), ++c);
        }
         
        // Print result
        for (Map.Entry m:hmap.entrySet())
          System.out.println("Character = " + m.getKey() +
                         " Frequency = " + m.getValue());
    }
 
    // Driver program to run and test above program
    public static void main(String args[]) throws IOException
    {
        Stringfun obj = new Stringfun();
        obj.words();
        obj.frequency();
    }
}


Python 3




# Python3 program to print Number of Words,
# Vowels and Frequency of Each Character
 
# A method to count the number of
# uppercase character, vowels and number of words
def words(str):
    wcount = vcount = ucount = i = 0
    while i < len(str):
        ch = str[i]
         
        # condition checking for word count
        if (ch == " " or ch == "."):
            wcount += 1
             
        # condition checking for vowels
        # in lower case    
        if(ch == "a" or ch == "e" or
           ch == "i" or ch == 'o' or ch == "u"):
            vcount += 1
             
        # condition checking for vowels in uppercase
        if (ch == "A" or ch == "E" or
            ch == "I" or ch == 'O' or ch == "U"):
            vcount += 1
             
        # condition checking for upper case characters
        if (ord(ch) >= 65 and ord(ch) <= 90):
            ucount += 1
        i += 1
         
    print("number of words = ", wcount)
    print("number of vowels = ", vcount)
    print("number of upper case characters = ",
                                        ucount)
     
# a method to print the frequency
# of each character.
def frequency(str):
    i = 1
     
    # checking each and every
    # ascii code character
    while i < 127:
        ch1 = chr(i)
        c = 0
        j = 0
        while j < len(str):
            ch2 = str[j]
            if(ch1 == ch2):
                c += 1
            j += 1
             
        # condition to print the frequency
        if c > 0:
            print("Character:", ch1 +
                  " Frequency:", c)
        i += 1
         
# Driver Code
 
# sample string to check the code    
s = "Geeks for Geeks."
 
# function calling
words(s)
frequency(s)
 
# This code is contributed by Animesh_Gupta


C#




using System;
using System.Collections.Generic;
 
public static class GFG
{
   
    // C# program to print Number of Words,
    // Vowels and Frequency of Each Character
    public static void words(string str)
    {
        int wcount = 0;
        int ucount = 0;
        int vcount = 0;
        for (int i = 0; i < str.Length; i++) {
            char c = str[i];
            switch (c) {
            case ' ':
            case '.':
                wcount++; // more delimiters can be given
                break;
            }
 
            switch (c) {
            case 'A':
            case 'E':
            case 'I':
            case 'O':
            case 'U':
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                vcount++;
                break;
            }
 
            if (c >= 65 && c <= 90) {
                ucount++;
            }
        }
 
        Console.Write("Number of words = ");
        Console.Write(wcount);
        Console.Write("\n");
        Console.Write("Number of vowels = ");
        Console.Write(vcount);
        Console.Write("\n");
        Console.Write("Number of upper case characters = ");
        Console.Write(ucount);
        Console.Write("\n");
    }
 
    // Function to calculate the frequency
    // of each character in the string
    public static void frequency(string str)
    {
        // Creates an empty TreeMap
        Dictionary<char, int> hmap
            = new Dictionary<char, int>();
 
        // Traverse through the given array
        for (int i = 0; i < str.Length; i++) {
            if (hmap.ContainsKey(str[i])) {
                hmap[str[i]] = hmap[str[i]] + 1;
            }
            else {
                hmap.Add(str[i], 1);
            }
        }
 
        // Print result
        foreach(var i in hmap)
        {
            Console.Write("Character = ");
            Console.Write(i.Key);
            Console.Write(" Frequency = ");
            Console.Write(i.Value);
            Console.Write("\n");
        }
    }
 
    // Driver Code
    public static void Main(string[] args)
    {
        string str = "Geeks for Geeks.";
        words(str);
        frequency(str);
    }
 
    // This code is contributed by Aarti_Rathi
}


Javascript




<script>
 
// JavaScript program to print Number of Words,
// Vowels and Frequency of Each Character
 
// A method to count the number of
// uppercase character, vowels and number of words
function words(str){
    let wcount = 0,vcount = 0,ucount =0,i = 0
    while(i < str.length){
        let ch = str[i]
         
        // condition checking for word count
        if (ch == " " || ch == ".")
            wcount += 1
             
        // condition checking for vowels
        // in lower case    
        if(ch == "a" || ch == "e" ||
           ch == "i" || ch == 'o' || ch == "u")
            vcount += 1
             
        // condition checking for vowels in uppercase
        if (ch == "A" || ch == "E" ||
            ch == "I" || ch == 'O' || ch == "U")
            vcount += 1
 
        // condition checking for upper case characters
        if (ch.charCodeAt(0) >= 65 && ch.charCodeAt(0) <= 90){
            ucount += 1
        }
        i += 1
    }
         
    document.write("number of words = ", wcount,"</br>")
    document.write("number of vowels = ", vcount,"</br>")
    document.write("number of upper case characters = ",
                                        ucount,"</br>")
}
     
// a method to print the frequency
// of each character.
function frequency(str){
     
    let i = 1
     
    // checking each and every
    // ascii code character
    while(i < 127){
        let ch1 = String.fromCharCode(i);
        let c = 0
        let j = 0
        while(j < str.length){
            let ch2 = str[j]
            if(ch1 == ch2)
                c += 1
            j += 1
        }
             
        // condition to print the frequency
        if(c > 0)
            document.write("Character:", ch1 + " Frequency:", c,"</br>")
        i += 1
    }
}
         
// Driver Code
 
// sample string to check the code    
let s = "Geeks for Geeks."
 
// function calling
words(s)
frequency(s)
 
// This code is contributed by shinjanpatra
 
</script>


Output

Number of words = 3
Number of vowels = 5
Number of upper case characters = 2
Character =   Frequency = 2
Character = . Frequency = 1
Character = G Frequency = 2
Character = e Frequency = 4
Character = f Frequency = 1
Character = k Frequency = 2
Character = o Frequency = 1
Character = r Frequency = 1
Character = s Frequency = 2

Time Complexity : O(n), where n is the number of characters in the string. 
Auxiliary Space : O(1).



Last Updated : 27 Jul, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads