仕分け Python 言語が選択されている場所では、常に非常に人気のあるユーティリティであり、あらゆる場所で多くのアプリケーションが使用されています。 Python の言語では、このタスクを実行するための並べ替え関数が提供されています。ただし、文字列など、すべての Python コンテナーが変更可能であるわけではないため、ソート関数は、ソートしようとしている状態では機能せず、不変性によってこれが停止されます。文字列を並べ替える具体的な方法について説明します。
例
Input: geekforgeeks Output: eeeefggkkors Explaination: The Sorting the characters in ascending order gives us 'eeeefggkkors'.>
Python で文字列をソートするプログラム
以下に説明するメソッドのリストを示します。
join() とsorted() を使用して文字列をソートするプログラム
上記の機能を組み合わせることで、この特定の問題を解決できる可能性があります。このタスクは 2 番目のステップで実行されます この場合、最初のステップでソートされた文字のリストを取得し、その結果を結合して結果を取得します。 ソートされた文字列。
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))> |
>
>出力
The original string : geekforgeeks String after sorting : eeeefggkkors>
時間計算量: コードの時間計算量は O(n log n) です。
空間の複雑さ: 指定されたコードの空間複雑さは O(n) です。
Python 文字列 u をソートする ネイティブメソッドを歌う
組み込みの Python ソート メソッドを使用して、ユーザー入力で特定の文字列をソートします。
Python3
String> => 'geekforgeeks'> print> (> 'Original String: '> , String)> lst> => list> (String)> lst.sort()> print> (> 'Sorted String: '> )> for> i> in> lst:> > print> (i, end> => '')> |
>
>
出力:
Original String: geekforgeeks Sorted String: eeeefggkkors>
時間計算量: コードの時間計算量は O(n log n) です。
空間の複雑さ: 指定されたコードの空間複雑さは O(n) です。
reduce() と lambda を使用して Python 文字列をソートする
この特定のタスクは、上記の機能を組み合わせて実行することもできます。ここでは、結果として得られるソートされた文字リストを、 ラムダ関数 Reduce 関数が結合されています。 Python2でのみ動作します
パイソン
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))> |
>
>出力
The original string : geekforgeeks String after sorting : eeeefggkkors>
時間計算量: コードの時間計算量は O(n log n) です。
空間の複雑さ: 指定されたコードの空間複雑さは O(n) です。
文字列を並べ替える Pythonでバブルソートを使用する
文字列を文字のリストに変換してから、 バブルソート リストを並べ替えるアルゴリズムが、並べ替えられたリストを結合して文字列を形成するようになりました。
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]>戦車[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))> |
>
>出力
Original string: geekforgeeks String after sorting: eeeefggkkors>
時間計算量 : O(n^2) 時間計算量が O(n^2) のバブル ソート アルゴリズムを使用しているためです。
補助スペース: 元の文字列から新しい文字のリストを作成するため、O(n)。
マージソートを使用して文字列をソートするプログラム
このアプローチでは、 マージソート 文字列内の文字を並べ替えるアルゴリズム。まず文字列を文字のリストに変換し、次に単一要素の基本ケースに達するまで再帰的にリストを半分に分割します。次に、merge() 関数を使用して、2 つの半分がソートされた順序で再びマージされます。ソートされたリストは文字列に変換されます。
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)> |
>
>出力
String after sorting: eeeefggkkors>
時間計算量: O(n log n) ここで、n は入力文字列 s の長さです。
空間の複雑さ: O(n) ここで、n は入力文字列 s の長さです。
辞書を使用して Python プログラム内の文字列を並べ替える
このプログラムは、指定された入力文字列を、その中に存在する文字に基づいて昇順に並べ替えます。辞書を使用して各文字の頻度をカウントし、文字の ASCII 値に基づいて並べ替えます。
Python3
Javaのjvm
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))> |
>
>出力
Original string: geekforgeeks String after sorting: eeeefggkkors>
時間計算量: このアルゴリズムの時間計算量は、sorted() 関数の使用により O(nlogn) です。
空間の複雑さ: このアルゴリズムの空間複雑さは、各文字の数を格納するために辞書を使用するため、O(n) です。