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' 메서드는 문자열의 다음 순열을 결정하는 데 도움이 됩니다.

  • 사용자가 문자열을 입력하여 콘솔에 표시합니다.

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

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