Ordene la string según los valores ASCII de los caracteres

Dada una string S de tamaño N , la tarea es ordenar la string según sus valores ASCII .

Ejemplos:

Entrada: S = “Geeks7”
Salida: 7Geeks
Explicación: Según los valores ASCII, los números enteros van primero, luego las letras mayúsculas y minúsculas.

Entrada: S = «GeeksForGeeks»
Salida: FGGeeeekkorss

Enfoque: la idea para resolver este problema es mantener una array para almacenar la frecuencia de cada carácter y luego agregarlos en consecuencia en la string resultante. Dado que hay un máximo de 256 caracteres, lo que hace que la complejidad del espacio sea constante. Siga los pasos a continuación para resolver este problema:

  • Inicialice un vector freq[] de tamaño 256 con valores 0 para almacenar la frecuencia de cada carácter de la string.
  • Itere sobre el rango [0, N) usando la variable i y aumente el conteo de s[i] en la array freq[] en 1 .
  • Haz que la string S sea una string vacía.
  • Iterar sobre el rango [0, N) usando la variable i e iterar sobre el rango [0, freq[i]) usando la variable j y agregando el carácter correspondiente al i-ésimo valor ASCII en la string s[].
  • Después de realizar los pasos anteriores, imprima la string S como resultado.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to sort the string based
// on their ASCII values
void sortString(string s)
{
    int N = s.length();
 
    // Stores the frequency of each
    // character of the string
    vector<int> freq(256, 0);
 
    // Count and store the frequency
    for (int i = 0; i < N; i++) {
        freq[s[i]]++;
    }
 
    s = "";
 
    // Store the result
    for (int i = 0; i < 256; i++) {
        for (int j = 0; j < freq[i]; j++)
            s = s + (char)i;
    }
 
    // Print the result
    cout << s << "\n";
 
    return;
}
 
// Driver Code
int main()
{
    string S = "GeeksForGeeks";
    sortString(S);
 
    return 0;
}

Java

// java program for the above approach
import java.util.*;
 
class Main
{
 
// Function to sort the string based
// on their ASCII values
static void sortString(String s)
{
    int N = s.length();
 
    // Stores the frequency of each
    // character of the string
    int [] freq = new int [256];
    for(int i = 0; i < 256; i++){
        freq[i] = 0;
    }
 
    // Count and store the frequency
    for (int i = 0; i < N; i++) {
         char character = s.charAt(i);
         int val = (int) character;
        freq[val]++;
    }
 
    // Store the result
    for (int i = 0; i < 256; i++) {
        for (int j = 0; j < freq[i]; j++)
          //    s = s + (char)i;
            System.out.print((char)i);
    }
}
 
// Driver Code
public static void main(String [] args)
{
    String S = "GeeksForGeeks";
    sortString(S);
}
}
 
// This code is contributed by amreshkumar3.

Python3

# Python Program to implement
# the above approach
 
# Function to sort the string based
# on their ASCII values
def sortString(s):
    N = len(s)
 
    # Stores the frequency of each
    # character of the string
    freq = [0] * 256
 
    # Count and store the frequency
    for i in range(0, N) :
        freq[ord(s[i])] += 1
 
    s = ""
 
    # Store the result
    for i in range(256):
        for j in range(freq[i]):
            s = s + chr(i)
 
    # Print the result
    print(s)
 
    return
 
# Driver Code
S = "GeeksForGeeks"
sortString(S)
 
# This code is contributed by gfgking.

C#

// C# implementation for the above approach
using System;
class GFG
{
 
// Function to sort the string based
// on their ASCII values
static void sortString(string s)
{
    int N = s.Length;
 
    // Stores the frequency of each
    // character of the string
    int [] freq = new int[256];
    for(int i = 0; i < 256; i++){
        freq[i] = 0;
    }
 
    // Count and store the frequency
    for (int i = 0; i < N; i++) {
         char character = s[i];
         int val = (int) character;
        freq[val]++;
    }
 
    // Store the result
    for (int i = 0; i < 256; i++) {
        for (int j = 0; j < freq[i]; j++)
          //    s = s + (char)i;
           Console.Write((char)i);
    }
}
 
    // Driver Code
    public static void Main()
    {
        string S = "GeeksForGeeks";
        sortString(S);
    }
}
 
// This code is contributed by sanjoy_62.

Javascript

<script>
       // JavaScript Program to implement
       // the above approach
 
       // Function to sort the string based
       // on their ASCII values
       function sortString(s)
       {
           let N = s.length;
 
           // Stores the frequency of each
           // character of the string
           let freq = new Array(256).fill(0)
 
           // Count and store the frequency
           for (let i = 0; i < N; i++) {
               freq[s[i].charCodeAt(0)]++;
           }
 
           s = "";
 
           // Store the result
           for (let i = 0; i < 256; i++) {
               for (let j = 0; j < freq[i]; j++)
                   s = s + String.fromCharCode(i);
           }
 
           // Print the result
           document.write(s);
 
           return;
       }
 
       // Driver Code
       let S = "GeeksForGeeks";
       sortString(S);
 
       // This code is contributed by Potta Lokesh
 
   </script>
Producción

FGGeeeekkorss

 Complejidad de Tiempo: O(256*N)
Espacio Auxiliar: O(256)

Enfoque alternativo: el problema dado también se puede resolver usando la función de comparación con la función sort() incorporada para ordenar la string dada según sus valores ASCII.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
#include "bits/stdc++.h"
using namespace std;
 
// Comparator Function to sort the given
// string in increasing order of their
// ASCII value
bool cmp(char ch, char chh) { return int(ch) <= int(chh); }
 
// Function to sort the string based
// on their ASCII values
string sortString(string S)
{
    // Sort the string S
    sort(S.begin(), S.end(), cmp);
 
    return S;
}
 
// Driver Code
int main()
{
    string S = "GeeksForGeeks";
    cout << sortString(S);
 
    return 0;
}

Python3

S = "GeeksForGeeks"
 
#Sorted is a in-built pyhton function to sort and
#using join we can create the new sorted string
string = ''.join(sorted(S))  
print(string)
 
# This code is contributed by Susobhan Akhuli

Javascript

// JS program for the above approach
 
// Function to sort the string based
// on their ASCII values
function sortString(S)
{
    // Sort the string S
    arr = S.split("");
    arr.sort();
 
    return arr.join("");
}
 
// Driver Code
var S = "GeeksForGeeks";
 
// Function Call
console.log(sortString(S));
 
// This code is contributed by phasing17
Producción

FGGeeeekkorss

 Complejidad de tiempo: O(N*log N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por vishnuthulasidosss y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *