Python-program til at sortere en streng
Sortering har altid været et ret populært værktøj med masser af applikationer overalt, hvor Python-sproget vælger. Python på sit sprog tilbyder en sorteringsfunktion til at udføre denne opgave. Men fordi ikke alle Python-beholderne er mutable, såsom streng, virker sorteringsfunktionen ikke, da den er på plads, og forsøger at sortere, og uforanderlighed stopper dette. Lad os diskutere specifikke måder, hvorpå en streng kan sorteres.
Eksempel
Input: geekforgeeks Output: eeeefggkkors Explaination: The Sorting the characters in ascending order gives us 'eeeefggkkors'.
Program til at sortere en streng i Python
Nedenfor er lister over metoder, som vi vil dække:
- Brug join() og sorteret()
- Brug af den indfødte metode
- Brug af den sorterede funktion med reducere() og lambda
- Ved brug af Boble sortering
- Bruger flette sortering metode
- Ved hjælp af en ordbog
Program til at sortere en streng ved hjælp af join() og sorted()
Kombinationen af ovenstående funktioner kan potentielt løse dette særlige problem. Denne opgave udføres i 2. trin hvor det første trin får vi den sorterede liste over tegn, og derefter samler vi resultatet for at få resultatet sorteret streng.
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
Tidskompleksitet: Kodens tidskompleksitet er O(n log n).
Rumkompleksitet: Rumkompleksiteten af den givne kode er O(n).
Sorter en Python-streng u synge den indfødte metode
At sortere en given streng med brugerinput ved hjælp af den indbyggede Python-sorteringsmetode.
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
Tidskompleksitet: Kodens tidskompleksitet er O(n log n).
Rumkompleksitet: Rumkompleksiteten af den givne kode er O(n).
Sorter en Python-streng ved hjælp af reduce() og lambda
Denne særlige opgave kan også udføres ved hjælp af en kombination af ovenstående funktioner. Her slutter vi os til den resulterende sorterede liste over tegn ved hjælp af lambda funktion forenet af reduceringsfunktionen. Virker kun til 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))> |
Produktion
The original string : geekforgeeks String after sorting : eeeefggkkors
Tidskompleksitet: Kodens tidskompleksitet er O(n log n).
Rumkompleksitet: Rumkompleksiteten af den givne kode er O(n).
Sorter en streng i Python ved hjælp af Bubble Sort
Konverter strengen til en liste med tegn, og brug derefter boble sortering algoritme til at sortere listen. Slut dig nu til den sorterede liste for at danne en streng.
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]>tanke[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
Tidskompleksitet : O(n^2), fordi vi bruger boblesorteringsalgoritmen, som har en tidskompleksitet på O(n^2).
Hjælpeplads: O(n), fordi vi opretter en ny liste over tegn fra den originale streng.
Program til at sortere en streng ved hjælp af Merge Sort
Denne tilgang bruger flette sortering algoritme til at sortere tegnene i strengen. Den konverterer først strengen til en liste af tegn og deler derefter listen rekursivt i to, indtil grundsæsonen for et enkelt element er nået. De to halvdele flettes derefter sammen igen i sorteret rækkefølge ved hjælp af funktionen merge(). Den sorterede liste konverteres derefter tilbage til en streng.
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
Tidskompleksitet: O(n log n) hvor n er længden af inputstrengen s.
Rumkompleksitet: O(n) hvor n er længden af inputstrengen s.
Sorter en streng i et Python-program ved hjælp af en ordbog
Dette program sorterer en given inputstreng i stigende rækkefølge baseret på de tegn, der findes i den. Den bruger en ordbog til at tælle frekvensen af hvert tegn og sorterer dem derefter baseret på tegnets ASCII-værdi.
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
Tidskompleksitet: Tidskompleksiteten af denne algoritme er O(nlogn) på grund af brugen af funktionen sorteret().
Rumkompleksitet: Rumkompleksiteten af denne algoritme er O(n) på grund af brugen af ordbogen til at gemme antallet af hvert tegn.