Sort an array of strings in ascending order with each string sorted in descending order
Last Updated :
04 Nov, 2022
Given a array of strings S[] of size N (1 ? N ? 105), sort characters of each string in descending order and then print the array of strings in ascending order.
Examples:
Input: s[] = {“apple”, “box”, “cat”}
Output: pplea tca xob
Explanation:
Sorting each string in descending order, S[] modifies to {“pplea”, “xob”, “tca”}.
Sorting the array in ascending order modifies S[] to {pplea, tca, xob}.
Input: s[] = {“pqr”, “moon”, “geeks”}
Output: oonm rqp skgee
Approach: Follow the steps below to solve the problem:
Below is the implementation of the above approach.
C++
#include <bits/stdc++.h>
using namespace std;
void sortStr(string s[], int N)
{
for ( int i = 0; i < N; i++) {
sort(s[i].begin(), s[i].end(), greater< char >());
}
sort(s, s + N);
for ( int i = 0; i < N; i++) {
cout << s[i] << " " ;
}
}
int main()
{
string s[] = { "apple" , "box" , "cat" };
int N = sizeof (s) / sizeof (s[0]);
sortStr(s, N);
return 0;
}
|
Java
import java.util.Arrays;
class GFG {
static void sortStr(String s[], int N)
{
for ( int i = 0 ; i < N; i++) {
s[i] = reverse(sortString(s[i]));
}
Arrays.sort(s);
for ( int i = 0 ; i < N; i++) {
System.out.print(s[i] + " " );
}
}
static String sortString(String inputString)
{
char tempArray[] = inputString.toCharArray();
Arrays.sort(tempArray);
return new String(tempArray);
}
static String reverse(String input)
{
char [] a = input.toCharArray();
int l, r = a.length - 1 ;
for (l = 0 ; l < r; l++, r--) {
char temp = a[l];
a[l] = a[r];
a[r] = temp;
}
return String.valueOf(a);
}
public static void main(String[] args)
{
String s[] = { "apple" , "box" , "cat" };
int N = s.length;
sortStr(s, N);
}
}
|
Python3
def sortStr(s, N):
for i in range (N):
s[i] = " ".join(reversed(" ".join( sorted (s[i]))))
s = " " .join( sorted (s))
print (s)
if __name__ = = '__main__' :
s = [ "apple" , "box" , "cat" ]
N = len (s)
sortStr(s, N)
|
C#
using System;
class GFG {
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;
}
}
static void sortStr( string [] s, int N)
{
for ( int i = 0; i < N; i++) {
char [] t = s[i].ToCharArray();
Array.Sort(t);
reverse(t);
s[i] = String.Join( "" , t);
}
Array.Sort(s);
for ( int i = 0; i < N; i++) {
Console.Write(s[i] + " " );
}
}
public static void Main()
{
string [] s = { "apple" , "box" , "cat" };
int N = s.Length;
sortStr(s, N);
}
}
|
Javascript
<script>
function sortStr( s, N)
{
for ( var i = 0; i < N; i++) {
s[i] = s[i].split( '' ).sort((a,b)=>{ return b>a?1:-1}).join( '' )
}
s.sort();
for ( var i = 0; i < N; i++) {
document.write( s[i] + " " );
}
}
var s = [ "apple" , "box" , "cat" ];
var N = s.length;
sortStr(s, N);
</script>
|
Time Complexity: O(N*MlogM) where N is the size of the array and M is the maximum size of any string present in the array.
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...