Print number of words, vowels and frequency of each character - GeeksforGeeks

28 Jun, 2021
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++
Java
Python 3
// 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 stringvoid 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 Codeint main(int argc, char const *argv[]){    string str = "Geeks for Geeks.";    words(str);    frequency(str);    return 0;} // This code is contributed by// sanjeev2552
// Java program to print Number of Words,// Vowels and Frequency of Each Characterimport 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();    }}
# 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 wordsdef 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 callingwords(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). 
sanjeev2552
Animesh_Gupta
surinderdawra388
Java-String-Programs
Java-Strings
java-TreeMap
Java
Strings
Java-Strings
Strings
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Interfaces in Java
Singleton Class in Java
LinkedList in Java
Collections in Java
Set in Java
Write a program to reverse an array or string
Longest Common Subsequence | DP-4
Write a program to print all permutations of a given string
C++ Data Types
Python program to check if a string is palindrome or not