Program to sort string in descending order

23 Jun, 2022
Given a string, sort it in descending order.Examples:  
Input : alkasingh
Output : snlkihgaa 

Input : nupursingh
Output : uusrpnnihg 

Input : geeksforgeeks
Output : ssrokkggfeeee 
 
A simple solution is to use library sort function std::sort() 
C++
Java
Python
C#
PHP
Javascript
// CPP program to sort a string in descending// order using library function#include <bits/stdc++.h>using namespace std; void descOrder(string s){    sort(s.begin(), s.end(), greater<char>());} int main(){    string s = "geeksforgeeks";    descOrder(s); // function call    return 0;}
// Java program to sort a string in descending// order using library functionimport java.util.*; class GFG{     static void descOrder(char[] s)    {        Arrays.sort(s);        reverse(s);    }     static void reverse(char[] a)    {        int i, n = a.length;        char t;        for (i = 0; i < n / 2; i++)        {            t = a[i];            a[i] = a[n - i - 1];            a[n - i - 1] = t;        }    }     // Driver code    public static void main(String[] args)    {        char[] s = "geeksforgeeks".toCharArray();        descOrder(s); // function call        System.out.println(String.valueOf(s));    }} // This code is contributed by 29AjayKumar
# Python program to sort# a string in descending# order using library function def descOrder(s):    s.sort(reverse = True)    str1 = ''.join(s)    print(str1) def main():    s = list('geeksforgeeks')         # function call    descOrder(s) if __name__=="__main__":    main() # This code is contributed by# prabhat kumar singh
// C# program to sort a string in descending// order using library functionusing System;     class GFG{      static void descOrder(char[] s)    {        Array.Sort(s);        reverse(s);    }      static void reverse(char[] a)    {        int i, n = a.Length;        char t;        for (i = 0; i < n / 2; i++)        {            t = a[i];            a[i] = a[n - i - 1];            a[n - i - 1] = t;        }    }      // Driver code    public static void Main(String[] args)    {        char[] s = "geeksforgeeks".ToCharArray();        descOrder(s); // function call        Console.WriteLine(String.Join("",s));    }} // This code is contributed by Rajput-Ji
<?php// PHP program to sort a string in descending// order using library function function descOrder($s){    $s = str_split($s);    rsort($s);    echo implode('', $s);} // Driver Code$s = "geeksforgeeks";descOrder($s); // function call // This code is contributed by ita_c?>
<script>       //  JavaScript program to sort      //  a string in descending      //  order using library function       function descOrder(s) {        s.sort().reverse();        str1 = s.join("");        document.write(str1);      }       var s = "geeksforgeeks";      s = s.split("");         // function call      descOrder(s);        </script>
Output: 
 ssrokkggfeeee 
The time complexity is : O(n log n) 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 ‘z’ to ‘a’ 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// in descending order#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 charters 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 = MAX_CHAR - 1; i >= 0; i--)        for (int j = 0; j < charCount[i]; j++)            cout << (char)('a' + i);} // Driver program to test above functionint main(){    string s = "alkasingh";    sortString(s);    return 0;}
// Java program to sort a string of characters// in descending order class GFG{     static int MAX_CHAR = 26;     // function to print string in sorted order    static void sortString(String str)    {                 // Hash array to keep count of characters.        // Initially count of all charters is        // initialized to zero.        int charCount[] = new int[MAX_CHAR];         // Traverse string and increment        // count of characters        // 'a'-'a' will be 0, 'b'-'a' will be 1,        for (int i = 0; i < str.length(); i++)        {                         // so for location of character in count            // array we will do str[i]-'a'.            charCount[str.charAt(i) - 'a']++;        }         // Traverse the hash array and print        // characters        for (int i = MAX_CHAR - 1; i >= 0; i--)        {            for (int j = 0; j < charCount[i]; j++)            {                System.out.print((char) ('a' + i));            }        }    }     // Driver code    public static void main(String[] args)    {        String s = "alkasingh";        sortString(s);    }} // This code is contributed by 29AjayKumar
# Python program to sort a string of characters# in descending order MAX_CHAR = 26; # function to print string in sorted orderdef sortString(str):         # Hash array to keep count of characters.    # Initially count of all charters is    # initialized to zero.    charCount = [0]*MAX_CHAR;     # Traverse string and increment    # count of characters    for i in range(len(str)):         # '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(MAX_CHAR - 1,-1, -1):        for j in range(charCount[i]):            print(chr(97+i),end=""); # Driver program to test above functions = "alkasingh";sortString(s); # This code is contributed by Princi Singh
// C# program to sort a string of characters// in descending orderusing System; class GFG{    static int MAX_CHAR = 26;     // function to print string in sorted order    static void sortString(String str)    {                 // Hash array to keep count of characters.        // Initially count of all charters is        // initialized to zero.        int []charCount = new int[MAX_CHAR];         // Traverse string and increment        // count of characters        // 'a'-'a' will be 0, 'b'-'a' will be 1,        for (int i = 0; i < str.Length; i++)        {                         // 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 = MAX_CHAR - 1; i >= 0; i--)        {            for (int j = 0; j < charCount[i]; j++)            {                Console.Write((char) ('a' + i));            }        }    }     // Driver code    public static void Main(String[] args)    {        String s = "alkasingh";        sortString(s);    }} // This code is contributed by PrinciRaj1992
<script>// Javascript program to sort a string of characters// in descending order    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 charters is        // initialized to zero.        let charCount = new Array(MAX_CHAR);        for(let i = 0; i < charCount.length; i++)        {            charCount[i] = 0;        }          // Traverse string and increment        // count of characters        // 'a'-'a' will be 0, 'b'-'a' will be 1,        for (let i = 0; i < str.length; i++)        {                          // so for location of character in count            // array we will do str[i]-'a'.            charCount[str[i].charCodeAt(0) - 'a'.charCodeAt(0)]++;        }          // Traverse the hash array and print        // characters        for (let i = MAX_CHAR - 1; i >= 0; i--)        {            for (let j = 0; j < charCount[i]; j++)            {                document.write(String.fromCharCode ('a'.charCodeAt(0) + i));            }        }    }         // Driver code    let s = "alkasingh";    sortString(s);             // This code is contributed by avanitrachhadiya2155</script>
Output:  
snlkihgaa
Time Complexity: O( n ), where n is the length of input string. Auxiliary Space: O( 1 ).This article is contributed by Aarti_Rathi and Prabhat kumar singh. 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
ukasp
29AjayKumar
princiraj1992
Rajput-Ji
princi singh
rdtank
avanitrachhadiya2155
as5853535
sachinvinod1904
frequency-counting
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