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

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


再帰を使用せずに文字列のすべての順列を辞書式順序で出力する必要がある場合は、文字列をパラメーターとして受け取るメソッドが定義されます。単純な「for」ループを使用して文字列要素を反復処理し、「while」条件を使用して特定の制約をチェックします。

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

from math import factorial
def lex_permutation(my_string):
for i in range(factorial(len(my_string))):
   print(''.join(my_string))
   i = len(my_string) - 1
   while i > 0 and my_string[i-1] > my_string[i]:
      i -= 1
   my_string[i:] = reversed(my_string[i:])
   if i > 0:
      q = i
      while my_string[i-1] > my_string[q]:
         q += 1
      temp_variable = my_string[i-1]
      my_string[i-1]= my_string[q]
      my_string[q]= temp_variable

my_string = 'bhd'
print("The string is ")
print(my_string)
my_string = list(my_string)
print("The string is being sorted")
my_string.sort()
lex_permutation(my_string)

出力

The string is
bhd
The string is being sorted
bdh
bhd
dbh
dhb
hbd
hdb

説明

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

  • 文字列をパラメータとして受け取る「lex_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