Skip to content
Related Articles

Related Articles

Improve Article

C program to find the frequency of characters in a string

  • Difficulty Level : Hard
  • Last Updated : 09 Oct, 2020
Geek Week

Given a string S containing lowercase English characters, the task is to find the frequency of all the characters in the string.

Examples:

Input: S=”geeksforgeeks”
Output:
e – 4
f – 1
g – 2
k – 2
o – 1
r – 1
s – 2

Input: S=”gfg”
Output:
f – 1
g – 2

Approach: Follow the steps to solve the problem:

  1. Initialize an array freq[] to store the frequency of each alphabet in the given string. The 0th index stores the frequency of the character ‘a’, 1st/sup> index stores the frequency of the character ‘b’ and so on.
  2. Iterate over the given string S and increment the frequency of each character encountered by 1, by performing freq[S[i] – ‘a’] += 1. If S[i] = ‘a’, then S[i] – ‘a’ is equal to 0, therefore the frequency of ‘a’ is incremented in the array.=
  3. After complete traversal of the string, print the frequency of all the characters in the string by traversing the array freq[].

Below is the implementation of the above approach:

C




// C program for the above approach
#include <stdio.h>
#include <string.h>
  
// Function to print the frequencies
// of each character of the string
void printFrequency(int freq[])
{
    for (int i = 0; i < 26; i++) {
  
        // If frequency of the
        // alphabet is non-zero
        if (freq[i] != 0) {
  
            // Print the character and
            // its respective frequency
            printf("%c - %d\n",
                   i + 'a', freq[i]);
        }
    }
}
  
// Function to calculate the frequencies
// of each character of the string
void findFrequncy(char S[])
{
    int i = 0;
  
    // Stores the frequencies
    // of each character
    int freq[26] = { 0 };
  
    // Traverse over the string
    while (S[i] != '\0') {
  
        // Increment the count of
        // each character by 1
        freq[S[i] - 'a']++;
  
        // Increment the index
        i++;
    }
  
    // Function call to print
    // the frequencies
    printFrequency(freq);
}
  
// Driver Code
int main()
{
    char S[100] = "geeksforgeeks";
    findFrequncy(S);
}
Output:
e - 4
f - 1
g - 2
k - 2
o - 1
r - 1
s - 2

Time Complexity: O(N)
Auxiliary Space: O(26)

We provide nothing but the best curated videos and practice problems for our students. Check out the C Foundation Course and master the C language from basic to advanced level. Wait no more, start learning today!



My Personal Notes arrow_drop_up
Recommended Articles
Page :