Count Frequency

Posted: 1 Dec, 2020
Difficulty: Easy

PROBLEM STATEMENT

Try Problem

You are given a string 'S' of length 'N', you need to find the frequency of each of the characters from ‘a’ to ‘z’ in the given string.

Example :

Given 'S' : abcdg
Then output will be : 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Input Format :
The first line of the input contains an integer 'T' denoting the number of test cases.

The first and the only line of each test case contains the string 'S'.
Output Format :
The only line of output of each test case should contain 26 space-separated integers, where the 'i'th integer represents the frequency of the 'i'th character. 
Note :
You don’t have to print anything, it has already been taken care of. Just implement the given function.
Constraints :
1 <= T <= 10^2
1 <= Length of the given string <= 10^4
It is guaranteed that all the characters in the string are lower case english alphabets.

Time Limit : 1 sec
Approach 1

Since there are just 26 lower case characters, we can use an array of size 26 to store the result.

 

Here is the algorithm : 

 

  1. Create an array (say, ‘FREQ’), where 0-th index stores the frequency of ‘a’, 1st index stores the frequency of ‘b’ and so on. So the last index i.e. 25th index stores the frequency of ‘z’.
  2. Run a for loop from 0 to ‘N’ - 1 (say, iterator ‘i’), on the string and do the following :
    • Let ‘C’ = ‘S’[i] be the current character.
    • Update frequency of current character by updating ‘FREQ’[C - ‘a’] to ‘FREQ’[C - ‘a’] + 1. We are doing C - ‘a’, as it will give the difference between ascii values of the characters and hence we can increase the count. Example : Let C be ‘b’. Ascii value of ‘b’ is 98 and that of ‘a’ is 97. So the difference between them is 1, which gives us the index for character ‘b’.
  3. Finally, return ‘FREQ’.
Try Problem