📌  相关文章
📜  程序以降序对字符串进行排序

📅  最后修改于: 2021-05-06 07:36:57             🧑  作者: Mango

给定一个字符串,按降序对其进行排序。
例子:

Input : alkasingh
Output : snlkihgaa 

Input : nupursingh
Output : uusrpnnihg 

Input : geeksforgeeks
Output : ssrokkggfeeee 

一个简单的解决方案是使用库排序函数std :: sort()

C++
// CPP program to sort a string in descending
// order using library function
#include 
using namespace std;
 
void descOrder(string s)
{
    sort(s.begin(), s.end(), greater());
}
 
int main()
{
    string s = "geeksforgeeks";
    descOrder(s); // function call
    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


Javascript


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


输出:

ssrokkggfeeee 

时间复杂度为:O(n log n)
一种有效的方法是首先观察到总共只能有26个唯一字符。因此,我们可以将所有字符从’a’到’z’的出现次数存储在哈希数组中。哈希数组的第一个索引将代表字符“ a”,第二个索引将代表“ b”,依此类推。最后,我们将简单地遍历散列数组,并将字符从’z’打印到’a’的次数在输入字符串出现的次数。
下面是上述想法的实现:

C++

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

输出:

snlkihgaa