Ordenar string de caracteres

Dada una string de caracteres en minúscula de ‘a’ – ‘z’. Necesitamos escribir un programa para imprimir los caracteres de esta string en orden.

Ejemplos: 

Input : bbccdefbbaa 
Output : aabbbbccdef

Input : geeksforgeeks
Output : eeeefggkkorss

Un enfoque simple será usar algoritmos de clasificación como clasificación rápida o clasificación combinada y clasificar la string de entrada e imprimirla. 

Implementación:

C++

// C++ program to sort a string of characters
#include<bits/stdc++.h>
using namespace std;
 
// function to print string in sorted order
void sortString(string &str)
{
   sort(str.begin(), str.end());
   cout << str;
}
 
// Driver program to test above function
int main()
{
    string s = "geeksforgeeks";
    sortString(s);
    return 0;
}

Java

// Java program to sort a string of characters
 
import java.util.Arrays;
 
class GFG {
 
// function to print string in sorted order
    static void sortString(String str) {
        char []arr = str.toCharArray();
        Arrays.sort(arr);
        System.out.print(String.valueOf(arr));
    }
 
// Driver program to test above function
    public static void main(String[] args) {
        String s = "geeksforgeeks";
        sortString(s);
    }
}
// This code is contributed by Rajput-Ji

Python3

# Python3 program to sort a string
# of characters
 
# function to print string in
# sorted order
def sortString(str) :
    str = ''.join(sorted(str))
    print(str)
 
# Driver Code
s = "geeksforgeeks"
sortString(s)
 
# This code is contributed by Smitha

C#

// C# program to sort a string of characters
using System;   
public class GFG {
 
// function to print string in sorted order
    static void sortString(String str) {
        char []arr = str.ToCharArray();
        Array.Sort(arr);
        Console.WriteLine(String.Join("",arr));
    }
 
// Driver program to test above function
    public static void Main() {
        String s = "geeksforgeeks";
        sortString(s);
    }
}
// This code is contributed by 29AjayKumar

Javascript

<script>
    // javascript program to sort a string of characters
 
    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 characters is
        // initialized to zero.
        let charCount = new Array(MAX_CHAR);
        charCount.fill(0);
 
        // Traverse string and increment
        // count of characters
        for (let 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].charCodeAt()-'a'.charCodeAt()]++;   
 
        // Traverse the hash array and print
        // characters
        for (let i=0;i<MAX_CHAR;i++)
            for (let j=0;j<charCount[i];j++)
                 document.write(String.fromCharCode('a'.charCodeAt()+i) );
    }
 
    let s = "geeksforgeeks";   
    sortString(s);   
     
    // This code is contributed by vaibhavrabadiya117.
</script>
Producción

eeeefggkkorss

Complejidad de tiempo: O(n log n) , donde n es la longitud de la string.
Espacio Auxiliar: O( 1 ).

Un enfoque eficiente será observar primero que solo puede haber un total de 26 caracteres únicos. Por lo tanto, podemos almacenar el recuento de ocurrencias de todos los caracteres de ‘a’ a ‘z’ en una array codificada. El primer índice de la array hash representará el carácter ‘a’, el segundo representará ‘b’ y así sucesivamente. Finalmente, simplemente recorreremos la array hash e imprimiremos los caracteres de ‘a’ a ‘z’ la cantidad de veces que ocurrieron en la string de entrada.

A continuación se muestra la implementación de la idea anterior: 

 

Preparación completa de la entrevista - GFG Implementación:

C++

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

Java

// Java program to sort
// a string of characters
public class SortString{
    static final int MAX_CHAR = 26;
 
    // function to print string in sorted order
    static void sortString(String str) {
 
        // Hash array to keep count of characters.
        int letters[] = new int[MAX_CHAR];
 
        // Traverse string and increment
        // count of characters
        for (char x : str.toCharArray()) {
 
            // 'a'-'a' will be 0, 'b'-'a' will be 1,
            // so for location of character in count
            // array we will do str[i]-'a'.
            letters[x - 'a']++;
        }
 
        // Traverse the hash array and print
        // characters
        for (int i = 0; i < MAX_CHAR; i++) {
            for (int j = 0; j < letters[i]; j++) {
                System.out.print((char) (i + 'a'));
            }
        }
    }
 
    // Driver program to test above function
    public static void main(String[] args) {
        sortString("geeksforgeeks");
    }
}
// This code is contributed
// by Sinuhe

Python3

# Python 3 program to sort a string
# of characters
 
MAX_CHAR = 26
 
# function to print string in sorted order
def sortString(str):
     
    # Hash array to keep count of characters.
    # Initially count of all characters is
    # initialized to zero.
    charCount = [0 for i in range(MAX_CHAR)]
     
    # Traverse string and increment
    # count of characters
    for i in range(0, len(str), 1):
         
        # '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(0, MAX_CHAR, 1):
        for j in range(0, charCount[i], 1):
            print(chr(ord('a') + i), end = "")
 
# Driver Code
if __name__ == '__main__':
    s = "geeksforgeeks"
    sortString(s)
     
# This code is contributed by
# Sahil_Shelangia

C#

// C# program to sort
// a string of characters
using System;
 
class GFG
{
     
    // Method to sort a
    // string alphabetically
    public static string sortString(string inputString)
    {
         
        // convert input
        // string to char array
        char[] tempArray = inputString.ToCharArray();
 
        // sort tempArray
        Array.Sort(tempArray);
 
        // return new sorted string
        return new string(tempArray);
    }
 
    // Driver Code
    public static void Main(string[] args)
    {
        string inputString = "geeksforgeeks";
 
        Console.WriteLine(sortString(inputString));
    }
}
 
// This code is contributed by Shrikant13

Javascript

<script>
 
// JavaScript program to sort
// a string of characters
 
let MAX_CHAR = 26;
 
// function to print string in sorted order
function sortString(str)
{
// Hash array to keep count of characters.
    let letters=new Array(MAX_CHAR);
    for(let i=0;i<MAX_CHAR;i++)
    {
        letters[i]=0;
    }
     
     // Traverse string and increment
        // count of characters
    for(let x=0;x<str.length;x++)
    {
        // 'a'-'a' will be 0, 'b'-'a' will be 1,
            // so for location of character in count
            // array we will do str[i]-'a'.
            letters[str[x].charCodeAt(0) - 'a'.charCodeAt(0)]++;
    }
    // Traverse the hash array and print
        // characters
        for (let i = 0; i < MAX_CHAR; i++) {
            for (let j = 0; j < letters[i]; j++) {
                document.write(String.fromCharCode
                (i + 'a'.charCodeAt(0)));
            }
        }
}
 
// Driver program to test above function
sortString("geeksforgeeks");
 
 
// This code is contributed by rag2127
 
</script>
Producción

eeeefggkkorss

Complejidad de tiempo: O(Max_CHAR*n)  que se convierte en O(n) ya que MAX_CHAR es constante, entonces Complejidad de tiempo total:- O(n) donde n es la longitud de la string.  
Espacio Auxiliar: O( 1 ).

Este artículo es una contribución de Aarti_Rathi y Harsh Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *