Python
 Computer >> コンピューター >  >> プログラミング >> Python

再帰を使用して文字列のすべての順列を辞書式順序で出力するPythonプログラム


再帰を使用して文字列のすべての順列を辞書式順序で出力する必要がある場合は、「for」ループを使用して要素のシーケンスを反復処理し、「join」メソッドを使用して要素を結合するメソッドが定義されます。

以下は同じのデモンストレーションです-

from math import factorial
def lexicographic_permutation_order(s):
   my_sequence = list(s)
   for _ in range(factorial(len(my_sequence))):
      print(''.join(my_sequence))
      next = next_in_permutation(my_sequence)

      if next is None:
         my_sequence.reverse()
      else:
         my_sequence = next

def next_in_permutation(my_sequence):
   if len(my_sequence) == 0:
      return None
   next = next_in_permutation(my_sequence[1:])
   if next is None:
      my_sequence[1:] = reversed(my_sequence[1:])
      q = 1
      while q < len(my_sequence) and my_sequence[0] > my_sequence[q]:
         q += 1
      if q == len(my_sequence):
         return None
      my_sequence[0], my_sequence[q] = my_sequence[q], my_sequence[0]
      return my_sequence
   else:
      return [my_sequence[0]] + next

my_input = input('Enter a string : ')
print("The string is :")
print(my_input)
print("The method is being called...")
lexicographic_permutation_order(my_input)

出力

Enter a string : hey
The string is :
hey
The method is being called...
hey
hye
yeh
yhe
hey
hye

説明

  • 必要なパッケージがインポートされます。

  • 要素の辞書式順序を見つけるのに役立つ「lexicographic_permutation_order」という名前のメソッドが定義されています。

  • メソッド「next_in_permutation」は、文字列内の次の順列を決定するのに役立ちます。

  • ユーザーが文字列を入力し、コンソールに表示します。

  • この文字列をパラメータとして渡すことでメソッドが呼び出されます。

  • 出力はコンソールに表示されます。


  1. 指定された文字列のすべての順列を出力するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −文字列の可能なすべての順列を表示するために必要な文字列が与えられます。 次に、以下の実装のソリューションを見てみましょう- 例 # conversion def toString(List):    return ''.join(List) # permutations def permute(a, l, r):    if l == r:       print (toString(a))    e

  2. 文字列に偶数の長さの単語を出力するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列を指定すると、文字列内のすべての単語を均等な長さで表示する必要があります。 アプローチ split()関数を使用して入力文字列を分割します。 forを使用して文字列の単語を繰り返し処理します ループ& len()を使用して単語の長さを計算します 機能。 長さが均等であると評価されると、単語が画面に表示されます。 それ以外の場合、画面に単語は表示されません。 次に、以下の実装を見てみましょう- 例 def printWords(s): # split