Print the frequency of each character in Alphabetical order

Given a string str, the task is to print the frequency of each of the characters of str in alphabetical order.

Example:

Input: str = “aabccccddd”
Output: a2b1c4d3
Since it is already in alphabetical order, the frequency
of the characters is returned for each character.



Input: str = “geeksforgeeks”
Output: e4f1g2k2o1r1s2

Approach:

  1. Create a Map to store the frequency of each of the characters of the given string.
  2. Iterate through the string and check if the character is present in the map.
  3. If the character is not present, insert it in the map with 1 as the initial value else increment its frequency by 1.
  4. Finally, print the frequency of each of the character in alphabetical order.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
const int MAX = 26;
  
// Function to print the frequency
// of each of the characters of
// s in alphabetical order
void compressString(string s, int n)
{
    // To store the frequency
    // of the characters
    int freq[MAX] = { 0 };
  
    // Update the frequency array
    for (int i = 0; i < n; i++) {
        freq[s[i] - 'a']++;
    }
  
    // Print the frequency in alphatecial order
    for (int i = 0; i < MAX; i++) {
  
        // If the current alphabet doesn't
        // appear in the string
        if (freq[i] == 0)
            continue;
  
        cout << (char)(i + 'a') << freq[i];
    }
}
  
// Driver code
int main()
{
    string s = "geeksforgeeks";
    int n = s.length();
  
    compressString(s, n);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach 
class GFG 
{
      
    static int MAX = 26
      
    // Function to print the frequency 
    // of each of the characters of 
    // s in alphabetical order 
    static void compressString(String s, int n) 
    
        // To store the frequency 
        // of the characters 
        int freq[] = new int[MAX] ; 
      
        // Update the frequency array 
        for (int i = 0; i < n; i++) 
        
            freq[s.charAt(i) - 'a']++; 
        
      
        // Print the frequency in alphatecial order 
        for (int i = 0; i < MAX; i++)
        
      
            // If the current alphabet doesn't 
            // appear in the string 
            if (freq[i] == 0
                continue
      
            System.out.print((char)(i + 'a') +""+ freq[i]); 
        
    
      
    // Driver code 
    public static void main (String[] args)
    
        String s = "geeksforgeeks"
        int n = s.length(); 
      
        compressString(s, n); 
    
}
  
// This code is contributed by AnkitRai01

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach 
using System;
  
class GFG 
      
    static int MAX = 26; 
      
    // Function to print the frequency 
    // of each of the characters of 
    // s in alphabetical order 
    static void compressString(string s, int n) 
    
        // To store the frequency 
        // of the characters 
        int []freq = new int[MAX] ; 
      
        // Update the frequency array 
        for (int i = 0; i < n; i++) 
        
            freq[s[i] - 'a']++; 
        
      
        // Print the frequency in alphatecial order 
        for (int i = 0; i < MAX; i++) 
        
      
            // If the current alphabet doesn't 
            // appear in the string 
            if (freq[i] == 0) 
                continue
      
            Console.Write((char)(i + 'a') +""+ freq[i]); 
        
    
      
    // Driver code 
    public static void Main() 
    
        string s = "geeksforgeeks"
        int n = s.Length; 
      
        compressString(s, n); 
    
  
// This code is contributed by AnkitRai01 

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of the approach 
MAX = 26
  
# Function to print the frequency 
# of each of the characters of 
# s in alphabetical order 
def compressString(s, n) :
  
    # To store the frequency 
    # of the characters 
    freq = [ 0 ] * MAX
  
    # Update the frequency array 
    for i in range(n) :
        freq[ord(s[i]) - ord('a')] += 1
  
    # Print the frequency in alphatecial order 
    for i in range(MAX) : 
  
        # If the current alphabet doesn't 
        # appear in the string 
        if (freq[i] == 0) :
            continue
  
        print((chr)(i + ord('a'))+ str(freq[i]),end = ""); 
  
# Driver code 
if __name__ == "__main__"
  
    s = "geeksforgeeks"
    n = len(s); 
  
    compressString(s, n); 
  
# This code is contributed by AnkitRai01

chevron_right


Output:

e4f1g2k2o1r1s2

Time Complexity: O(n)
Auxiliary Space: O(1)



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : AnkitRai01