Programa Python para ordenar una cadena

Clasificación Siempre ha sido una utilidad bastante popular con muchas aplicaciones en todas partes, donde opta el lenguaje Python. Python en su lenguaje ofrece una función de clasificación para realizar esta tarea. Pero debido a que no todos los contenedores de Python son mutables, como las cadenas, la función de clasificación no funciona ya que está en su lugar intentando ordenar y la inmutabilidad detiene esto. Analicemos formas específicas en las que se puede ordenar una cadena.

Ejemplo

  Input:   geekforgeeks   Output:   eeeefggkkors   Explaination:  The Sorting the characters in ascending order gives us 'eeeefggkkors'. 

Programa para ordenar una cadena en Python

A continuación se muestran las listas de métodos que cubriremos:

Programa para ordenar una cadena usando join() y sorted()

La combinación de las funciones anteriores puede potencialmente resolver este problema en particular. Esta tarea se realiza en el segundo paso. en el que el primer paso obtenemos la lista ordenada de caracteres y luego unimos el resultado para obtener el resultado cadena ordenada.

Python3




test_string> => 'geekforgeeks'> # printing original string> print> (> 'The original string : '> +> str> (test_string))> # using join() + sorted()> # Sorting a string> res> => ''.join(> sorted> (test_string))> > # print result> print> (> 'String after sorting : '> +> str> (res))>

Producción

The original string : geekforgeeks String after sorting : eeeefggkkors 

Complejidad del tiempo: La complejidad temporal del código es O (n log n).
Complejidad espacial: La complejidad espacial del código dado es O (n).

Ordenar una cadena de Python u cantar el método nativo

Para ordenar una cadena determinada con la entrada del usuario utilizando el método de clasificación incorporado de Python.

Python3




String> => 'geekforgeeks'> print> (> 'Original String: '> , String)> lst> => list> (String)> lst.sort()> print> (> 'Sorted String: '> )> for> i> in> lst:> > print> (i, end> => '')>

Producción:

Original String: geekforgeeks Sorted String:  eeeefggkkors 

Complejidad del tiempo: La complejidad temporal del código es O (n log n).
Complejidad espacial: La complejidad espacial del código dado es O (n).

Ordenar una cadena de Python usando reduce() y lambda

Esta tarea particular también se puede realizar utilizando una combinación de las funciones anteriores. Aquí unimos la lista ordenada resultante de caracteres usando el función lambda unido por la función de reducción. Funciona sólo para Python2

Pitón




test_string> => 'geekforgeeks'> # printing original string> print> (> 'The original string : '> +> str> (test_string))> # using sorted() + reduce() + lambda> res> => reduce> (> lambda> x, y: x> +> y,> sorted> (test_string))> > # print result> print> (> 'String after sorting : '> +> str> (res))>

Producción

The original string : geekforgeeks String after sorting : eeeefggkkors 

Complejidad del tiempo: La complejidad temporal del código es O (n log n).
Complejidad espacial: La complejidad espacial del código dado es O (n).

ordenar una cadena en Python usando Bubble Sort

Convierta la cadena en una lista de caracteres y luego use el ordenamiento de burbuja El algoritmo para ordenar la lista ahora se une a la lista ordenada para formar una cadena.

Python3




def> sort_string(s):> > chars> => list> (s)> > n> => len> (chars)> > for> i> in> range> (n):> > for> j> in> range> (> 0> , n> -> i> -> 1> ):> > if> chars[j]>tanques[j> +> 1> ]:> > chars[j], chars[j> +> 1> ]> => chars[j> +> 1> ], chars[j]> > return> ''.join(chars)> s> => 'geekforgeeks'> print> (> 'Original string:'> , s)> print> (> 'String after sorting:'> , sort_string(s))>

Producción

Original string: geekforgeeks String after sorting: eeeefggkkors 

Complejidad del tiempo : O(n^2) porque utilizamos el algoritmo de clasificación de burbujas que tiene una complejidad temporal de O(n^2).
Espacio Auxiliar: O(n) porque creamos una nueva lista de caracteres a partir de la cadena original.

Programa para ordenar una cadena usando Merge Sort

Este enfoque utiliza el fusionar ordenar Algoritmo para ordenar los caracteres de la cadena. Primero convierte la cadena en una lista de caracteres y luego divide recursivamente la lista por la mitad hasta alcanzar el caso base de un solo elemento. Luego, las dos mitades se vuelven a fusionar en orden usando la función merge(). Luego, la lista ordenada se vuelve a convertir en una cadena.

Python3




# Define a function called 'merge_sort'> def> merge_sort(s):> > if> len> (s) <> => 1> :> > return> s> > # find the middle index of the string 's'> > mid> => len> (s)> /> /> 2> > # split the string into two halves, left and right> > left> => merge_sort(s[:mid])> > right> => merge_sort(s[mid:])> > #Recursively apply the merge_sort function on the left and right halves.> > return> merge(left, right)> > # Merge the left and right halves using the merge function.> def> merge(left, right):> #Initialize an empty list called 'result' and two indices, 'i' and 'j', both set to 0.> > result> => []> > i> => j> => 0> > while> i <> len> (left)> and> j <> len> (right):> > if> left[i] result.append(left[i]) #Increment the index of the array i += 1 else: result.append(right[j]) #Increment the index of the array j += 1 result += left[i:] result += right[j:] return result s = 'geekforgeeks' #Convert the sorted list to a string and print the result. sorted_s = ''.join(merge_sort(list(s))) print('String after sorting:', sorted_s)>

Producción

String after sorting: eeeefggkkors 

Complejidad del tiempo: O(n iniciar sesión n) donde n es la longitud de la cadena de entrada s.
Complejidad espacial: O (n) donde n es la longitud de la cadena de entrada s.

Ordenar una cadena en un programa Python usando un diccionario

Este programa ordena una cadena de entrada determinada en orden ascendente según los caracteres presentes en ella. Utiliza un diccionario para contar la frecuencia de cada carácter y luego los ordena según el valor ASCII del carácter.

Python3




input_string> => 'geekforgeeks'> #Initialize an empty dictionary to store the count> char_count> => {}> #Loop through each character in the input string and update the count of that character> for> char> in> input_string:> > if> char> in> char_count:> > char_count[char]> +> => 1> > else> :> > char_count[char]> => 1> > #Create an empty string to store the sorted string.> sorted_string> => ''> #Loop through each character in the sorted list of keys of the dictionary> #Add that character multiplied by its count in the input string to the sorted string.> for> char> in> sorted> (char_count.keys()):> > sorted_string> +> => char> *> char_count[char]> #Print the original string and the sorted string.> print> (> 'Original string: {}'> .> format> (input_string))> print> (> 'String after sorting: {}'> .> format> (sorted_string))>

Producción

Original string: geekforgeeks String after sorting: eeeefggkkors 

Complejidad del tiempo: La complejidad temporal de este algoritmo es O(nlogn) debido al uso de la función sorted().
Complejidad espacial: La complejidad espacial de este algoritmo es O(n) debido al uso del diccionario para almacenar el recuento de cada carácter.