Sort string of characters

06 Jul, 2022
Given a string of lowercase characters from ‘a’ – ‘z’. We need to write a program to print the characters of this string in sorted order.Examples:  
Input : bbccdefbbaa 
Output : aabbbbccdef

Input : geeksforgeeks
Output : eeeefggkkorss
 
A simple approach will be to use sorting algorithms like quick sort or merge sort and sort the input string and print it.  
C++
Java
Python3
C#
Javascript
// C++ program to sort a string of characters#include<bits/stdc++.h>using namespace std; // function to print string in sorted ordervoid sortString(string &str){   sort(str.begin(), str.end());   cout << str;} // Driver program to test above functionint main(){    string s = "geeksforgeeks";    sortString(s);    return 0;}
// Java program to sort a string of characters import java.util.Arrays; class GFG { // function to print string in sorted order    static void sortString(String str) {        char []arr = str.toCharArray();        Arrays.sort(arr);        System.out.print(String.valueOf(arr));    } // Driver program to test above function    public static void main(String[] args) {        String s = "geeksforgeeks";        sortString(s);    }}// This code is contributed by Rajput-Ji
# Python3 program to sort a string# of characters # function to print string in# sorted orderdef sortString(str) :    str = ''.join(sorted(str))    print(str) # Driver Codes = "geeksforgeeks"sortString(s) # This code is contributed by Smitha
// C# program to sort a string of charactersusing System;   public class GFG { // function to print string in sorted order    static void sortString(String str) {        char []arr = str.ToCharArray();        Array.Sort(arr);        Console.WriteLine(String.Join("",arr));    } // Driver program to test above function    public static void Main() {        String s = "geeksforgeeks";        sortString(s);    }}// This code is contributed by 29AjayKumar
<script>    // javascript program to sort a string of characters     let MAX_CHAR = 26;     // function to print string in sorted order    function sortString(str)    {             // Hash array to keep count of characters.        // Initially count of all characters is        // initialized to zero.        let charCount = new Array(MAX_CHAR);        charCount.fill(0);         // Traverse string and increment        // count of characters        for (let i = 0; i < str.length; i++)             // 'a'-'a' will be 0, 'b'-'a' will be 1,            // so for location of character in count            // array we will do str[i]-'a'.            charCount[str[i].charCodeAt()-'a'.charCodeAt()]++;            // Traverse the hash array and print        // characters        for (let i=0;i<MAX_CHAR;i++)            for (let j=0;j<charCount[i];j++)                 document.write(String.fromCharCode('a'.charCodeAt()+i) );    }     let s = "geeksforgeeks";       sortString(s);            // This code is contributed by vaibhavrabadiya117.</script>
Output:  
eeeefggkkorss
Time Complexity: O(n log n), where n is the length of string.
Auxiliary Space: O( 1 ).An efficient approach will be to observe first that there can be a total of 26 unique characters only. So, we can store the count of occurrences of all the characters from ‘a’ to ‘z’ in a hashed array. The first index of the hashed array will represent character ‘a’, second will represent ‘b’ and so on. Finally, we will simply traverse the hashed array and print the characters from ‘a’ to ‘z’ the number of times they occurred in input string.Below is the implementation of above idea:  
 
C++
Java
Python3
C#
Javascript
// C++ program to sort a string of characters#include<bits/stdc++.h>using namespace std; const int MAX_CHAR = 26; // function to print string in sorted ordervoid sortString(string &str){    // Hash array to keep count of characters.    // Initially count of all characters is    // initialized to zero.    int charCount[MAX_CHAR] = {0};         // Traverse string and increment    // count of characters    for (int i=0; i<str.length(); i++)         // 'a'-'a' will be 0, 'b'-'a' will be 1,        // so for location of character in count        // array we will do str[i]-'a'.        charCount[str[i]-'a']++;            // Traverse the hash array and print    // characters    for (int i=0;i<MAX_CHAR;i++)        for (int j=0;j<charCount[i];j++)            cout << (char)('a'+i);} // Driver program to test above functionint main(){    string s = "geeksforgeeks";       sortString(s);       return 0;}
// Java program to sort// a string of characterspublic class SortString{    static final int MAX_CHAR = 26;     // function to print string in sorted order    static void sortString(String str) {         // Hash array to keep count of characters.        int letters[] = new int[MAX_CHAR];         // Traverse string and increment        // count of characters        for (char x : str.toCharArray()) {             // 'a'-'a' will be 0, 'b'-'a' will be 1,            // so for location of character in count            // array we will do str[i]-'a'.            letters[x - 'a']++;        }         // Traverse the hash array and print        // characters        for (int i = 0; i < MAX_CHAR; i++) {            for (int j = 0; j < letters[i]; j++) {                System.out.print((char) (i + 'a'));            }        }    }     // Driver program to test above function    public static void main(String[] args) {        sortString("geeksforgeeks");    }}// This code is contributed// by Sinuhe
# Python 3 program to sort a string# of characters MAX_CHAR = 26 # function to print string in sorted orderdef sortString(str):         # Hash array to keep count of characters.    # Initially count of all characters is    # initialized to zero.    charCount = [0 for i in range(MAX_CHAR)]         # Traverse string and increment    # count of characters    for i in range(0, len(str), 1):                 # 'a'-'a' will be 0, 'b'-'a' will be 1,        # so for location of character in count        # array we will do str[i]-'a'.        charCount[ord(str[i]) - ord('a')] += 1         # Traverse the hash array and print    # characters    for i in range(0, MAX_CHAR, 1):        for j in range(0, charCount[i], 1):            print(chr(ord('a') + i), end = "") # Driver Codeif __name__ == '__main__':    s = "geeksforgeeks"    sortString(s)     # This code is contributed by# Sahil_Shelangia
// C# program to sort// a string of charactersusing System; class GFG{         // Method to sort a    // string alphabetically    public static string sortString(string inputString)    {                 // convert input        // string to char array        char[] tempArray = inputString.ToCharArray();         // sort tempArray        Array.Sort(tempArray);         // return new sorted string        return new string(tempArray);    }     // Driver Code    public static void Main(string[] args)    {        string inputString = "geeksforgeeks";         Console.WriteLine(sortString(inputString));    }} // This code is contributed by Shrikant13
<script> // JavaScript program to sort// a string of characters let MAX_CHAR = 26; // function to print string in sorted orderfunction sortString(str){// Hash array to keep count of characters.    let letters=new Array(MAX_CHAR);    for(let i=0;i<MAX_CHAR;i++)    {        letters[i]=0;    }          // Traverse string and increment        // count of characters    for(let x=0;x<str.length;x++)    {        // 'a'-'a' will be 0, 'b'-'a' will be 1,            // so for location of character in count            // array we will do str[i]-'a'.            letters[str[x].charCodeAt(0) - 'a'.charCodeAt(0)]++;    }    // Traverse the hash array and print        // characters        for (let i = 0; i < MAX_CHAR; i++) {            for (let j = 0; j < letters[i]; j++) {                document.write(String.fromCharCode                (i + 'a'.charCodeAt(0)));            }        }} // Driver program to test above functionsortString("geeksforgeeks");  // This code is contributed by rag2127 </script>
Output:  
eeeefggkkorss
Time Complexity: O(Max_CHAR*n) which becomes O(n) as MAX_CHAR is  constant,So Overall Time Complexity:- O(n) where n is the length of the string.  Auxiliary Space: O( 1 ).This article is contributed by Aarti_Rathi and Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
prabhat kumar singh
shrikanth13
Rajput-Ji
29AjayKumar
sahilshelangia
Smitha Dinesh Semwal
SinuheVelez
vaibhavrabadiya117
rag2127
sudhanshusingh
codefast
kk9826225
simmytarika5
gulshankumarar231
codewithrathi
Hash
Sorting
Strings
Hash
Strings
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Given an array A[] and a number x, check for pair in A[] with sum as x (aka Two Sum)
What is Hashing | A Complete Tutorial
Internal Working of HashMap in Java
Hashing | Set 1 (Introduction)
Count pairs with given sum
Merge Sort
Bubble Sort Algorithm
QuickSort
Insertion Sort
Selection Sort Algorithm