Skip to content
Related Articles

Related Articles

Improve Article
Print number of words, vowels and frequency of each character
  • Difficulty Level : Basic
  • Last Updated : 07 Jan, 2020

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 freqency 
        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


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).

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer DSA Live Classes 




My Personal Notes arrow_drop_up
Recommended Articles
Page :