Python-program för att sortera en sträng

Sortering har alltid varit ett ganska populärt verktyg med massor av applikationer överallt, där Python-språket väljer. Python på sitt språk erbjuder en sorteringsfunktion för att utföra denna uppgift. Men eftersom inte alla Python-behållare är föränderliga, såsom sträng, fungerar inte sorteringsfunktionen när den försöker sortera och oföränderlighet stoppar detta. Låt oss diskutera specifika sätt på vilka en sträng kan sorteras.

Exempel

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

Program för att sortera en sträng i Python

Nedan är listorna över metoder som vi kommer att täcka:

Program för att sortera en sträng med join() och sorted()

Kombinationen av ovanstående funktioner kan potentiellt lösa just detta problem. Denna uppgift utförs i steg 2 där det första steget får vi den sorterade listan med tecken och sedan sammanfogar vi resultatet för att få resultatet sorterad sträng.

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))>

Produktion

The original string : geekforgeeks String after sorting : eeeefggkkors 

Tidskomplexitet: Kodens tidskomplexitet är O(n log n).
Utrymmes komplexitet: Rymdkomplexiteten för den givna koden är O(n).

Sortera en Python-sträng u sjunga Native Method

Att sortera en given sträng med användarinmatning med den inbyggda Python-sorteringsmetoden.

Python3




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

Produktion:

Original String: geekforgeeks Sorted String:  eeeefggkkors 

Tidskomplexitet: Kodens tidskomplexitet är O(n log n).
Utrymmes komplexitet: Rymdkomplexiteten för den givna koden är O(n).

Sortera en Python-sträng med reduce() och lambda

Denna speciella uppgift kan också utföras med en kombination av ovanstående funktioner. Här sammanfogar vi den resulterande sorterade listan med tecken med hjälp av lambdafunktion förenas med reduceringsfunktionen. Fungerar bara för Python2

Pytonorm




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))>

Produktion

The original string : geekforgeeks String after sorting : eeeefggkkors 

Tidskomplexitet: Kodens tidskomplexitet är O(n log n).
Utrymmes komplexitet: Rymdkomplexiteten för den givna koden är O(n).

Sortera en sträng i Python med Bubble Sort

Konvertera strängen till en lista med tecken och använd sedan bubbla sortera algoritm för att sortera listan gå nu med i den sorterade listan för att bilda en sträng.

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]>tankar[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))>

Produktion

Original string: geekforgeeks String after sorting: eeeefggkkors 

Tidskomplexitet : O(n^2) eftersom vi använder bubbelsorteringsalgoritmen som har en tidskomplexitet på O(n^2).
Hjälputrymme: O(n) eftersom vi skapar en ny lista med tecken från den ursprungliga strängen.

Program för att sortera en sträng med hjälp av Merge Sort

Detta tillvägagångssätt använder slå samman sortering algoritm för att sortera tecknen i strängen. Den konverterar först strängen till en lista med tecken och delar sedan rekursivt upp listan på mitten tills basfallet för ett enskilt element nås. De två halvorna slås sedan samman igen i sorterad ordning med hjälp av merge()-funktionen. Den sorterade listan konverteras sedan tillbaka till en sträng.

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)>

Produktion

String after sorting: eeeefggkkors 

Tidskomplexitet: O(n log n) där n är längden på inmatningssträngen s.
Rymdkomplexitet: O(n) där n är längden på inmatningssträngen s.

Sortera en sträng i ett Python-program med hjälp av en ordbok

Detta program sorterar en given inmatningssträng i stigande ordning baserat på de tecken som finns i den. Den använder en ordbok för att räkna frekvensen för varje tecken och sorterar dem sedan baserat på tecknets ASCII-värde.

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))>

Produktion

Original string: geekforgeeks String after sorting: eeeefggkkors 

Tidskomplexitet: Tidskomplexiteten för denna algoritm är O(nlogn) på grund av användningen av funktionen sortered().
Utrymmes komplexitet: Rymdkomplexiteten för denna algoritm är O(n) på grund av användningen av ordboken för att lagra antalet för varje tecken.