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'이라는 메서드가 정의되어 있습니다.

  • 계승 방법을 사용하고 문자열의 계승을 반복합니다.

  • 반전된 문자열과 원래 문자열을 비교합니다.

  • 간단한 교환이 완료되었습니다.

  • 메소드 외부에서 문자열이 정의되고 콘솔에 표시됩니다.

  • 그런 다음 정렬됩니다.

  • 이 문자열을 전달하여 메서드를 호출합니다.

  • 출력은 콘솔에 표시됩니다.