# C program to find the frequency of characters in a string

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

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

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

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 ``#include `` ` `// 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 = { 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 = ``"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)

My Personal Notes arrow_drop_up