Skip to content
Related Articles
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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 ``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 hmap = ``                     ``new` `TreeMap();``  ` `        ``// 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