Programme Python pour trier une chaîne
Tri a toujours été un utilitaire très populaire avec de nombreuses applications partout, où le langage Python opte. Python dans son langage propose une fonction de tri pour effectuer cette tâche. Mais comme tous les conteneurs Python ne sont pas mutables, comme les chaînes, la fonction de tri ne fonctionne pas telle qu'elle est en place pour essayer de trier et l'immuabilité arrête cela. Discutons des manières spécifiques dont une chaîne peut être triée.
Exemple
Input: geekforgeeks Output: eeeefggkkors Explaination: The Sorting the characters in ascending order gives us 'eeeefggkkors'.
Programme pour trier une chaîne en Python
Vous trouverez ci-dessous les listes de méthodes que nous aborderons :
- En utilisant join() et trié()
- Utiliser la méthode native
- Utilisation de la fonction triée avec réduire() et lambda
- En utilisant Tri à bulles
- En utilisant le tri par fusion méthode
- Utilisant un dictionnaire
Programme pour trier une chaîne en utilisant join() et sorted()
La combinaison des fonctions ci-dessus peut potentiellement résoudre ce problème particulier. Cette tâche est effectuée en 2ème étape dans lequel la première étape nous obtenons la liste triée des caractères puis nous joignons le résultat pour obtenir la résultante chaîne triée.
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))> |
Sortir
The original string : geekforgeeks String after sorting : eeeefggkkors
Complexité temporelle : La complexité temporelle du code est O(n log n).
Complexité spatiale : La complexité spatiale du code donné est O(n).
Trier une chaîne Python u chanter la méthode native
Pour trier une chaîne donnée avec la saisie de l'utilisateur à l'aide de la méthode de tri Python intégrée.
Python3
String> => 'geekforgeeks'> print> (> 'Original String: '> , String)> lst> => list> (String)> lst.sort()> print> (> 'Sorted String: '> )> for> i> in> lst:> > print> (i, end> => '')> |
Sortir:
Original String: geekforgeeks Sorted String: eeeefggkkors
Complexité temporelle : La complexité temporelle du code est O(n log n).
Complexité spatiale : La complexité spatiale du code donné est O(n).
Trier une chaîne Python en utilisant réduire() et lambda
Cette tâche particulière peut également être effectuée en utilisant une combinaison des fonctions ci-dessus. Ici, nous rejoignons la liste triée de caractères résultante en utilisant le fonction lambda rejoint par la fonction de réduction. Fonctionne uniquement pour Python2
Python
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))> |
Sortir
The original string : geekforgeeks String after sorting : eeeefggkkors
Complexité temporelle : La complexité temporelle du code est O(n log n).
Complexité spatiale : La complexité spatiale du code donné est O(n).
Trier une chaîne en Python en utilisant le tri à bulles
Convertissez la chaîne en une liste de caractères puis utilisez le tri à bulles algorithme pour trier la liste, rejoignez maintenant la liste triée pour former une chaîne.
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]>chars[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))> |
Sortir
Original string: geekforgeeks String after sorting: eeeefggkkors
Complexité temporelle : O(n^2) car nous utilisons l'algorithme de tri à bulles qui a une complexité temporelle de O(n^2).
Espace auxiliaire : O(n) car nous créons une nouvelle liste de caractères à partir de la chaîne d'origine.
Programme pour trier une chaîne à l'aide du tri par fusion
Cette approche utilise le tri par fusion algorithme pour trier les caractères de la chaîne. Il convertit d'abord la chaîne en une liste de caractères, puis divise récursivement la liste en deux jusqu'à ce que le cas de base d'un seul élément soit atteint. Les deux moitiés sont ensuite fusionnées dans un ordre trié à l’aide de la fonction merge(). La liste triée est ensuite reconvertie en chaîne.
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)> |
Sortir
String after sorting: eeeefggkkors
Complexité temporelle : O (n journal n) où n est la longueur de la chaîne d'entrée s.
Complexité spatiale : O(n) où n est la longueur de la chaîne d'entrée s.
Trier une chaîne dans un programme Python à l'aide d'un dictionnaire
Ce programme trie une chaîne d'entrée donnée par ordre croissant en fonction des caractères qui y sont présents. Il utilise un dictionnaire pour compter la fréquence de chaque caractère, puis les trie en fonction de la valeur ASCII du caractère.
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))> |
Sortir
Original string: geekforgeeks String after sorting: eeeefggkkors
Complexité temporelle : La complexité temporelle de cet algorithme est O(nlogn) en raison de l'utilisation de la fonction sorted().
Complexité spatiale : La complexité spatiale de cet algorithme est O(n) en raison de l'utilisation du dictionnaire pour stocker le nombre de chaque caractère.