Open In App

Program to sort string in descending order

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

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()

Implementation:

C++




// 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
    for(int i = 0; i <  s.size(); i++)
      cout << s[i];
    return 0;
}


Java




// Java program to sort a string in descending
// order using library function
import 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




# 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#




// C# program to sort a string in descending
// order using library function
using 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
// 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
?>


Javascript




<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++




// 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 order
void 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 = MAX_CHAR - 1; i >= 0; i--)
        for (int j = 0; j < charCount[i]; j++)
            cout << (char)('a' + i);
}
 
// Driver program to test above function
int main()
{
    string s = "alkasingh";
    sortString(s);
    return 0;
}


Java




// 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


Python3




# Python program to sort a string of characters
# in descending order
 
MAX_CHAR = 26;
 
# function to print string in sorted order
def 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 function
s = "alkasingh";
sortString(s);
 
# This code is contributed by Princi Singh


C#




// C# program to sort a string of characters
// in descending order
using 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


Javascript




<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 ).

 



Last Updated : 01 Nov, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads